mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Documentation: Move IPC endpoint documentation to manpage section 4
This commit is contained in:
parent
9660f5d0e6
commit
1419732a73
Notes:
sideshowbarker
2024-07-17 09:31:28 +09:00
Author: https://github.com/kleinesfilmroellchen Commit: https://github.com/SerenityOS/serenity/commit/1419732a73 Pull-request: https://github.com/SerenityOS/serenity/pull/14548 Reviewed-by: https://github.com/linusg
2 changed files with 15 additions and 7 deletions
|
@ -1,16 +1,23 @@
|
|||
# Serenity Formats
|
||||
## Name
|
||||
|
||||
This document summarizes all non-standard file formats, data formats, and mime-types used by Serenity.
|
||||
ipc - Unix socket Inter Process Communication protocols
|
||||
|
||||
## Inter Process Communication (through Unix sockets)
|
||||
## Synopsis
|
||||
|
||||
The various services each have their own formats, all very similar, and automatically implemented through LibIPC. The specifics depend on the corresponding source `.ipc` file.
|
||||
IPC endpoints are provided as Unix sockets in `/tmp/portal`. All services have their own formats, automatically implemented through LibIPC.
|
||||
|
||||
The format can be identified by the format magic, which is derived in [`Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp`](../Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp)
|
||||
from the service-endpoint name, e.g. "ClipboardClient" (which hashes to 4008793515) or "ClipboardServer" (which hashes to 1329211611).
|
||||
## Description
|
||||
|
||||
The specifics of each service's format depend on the corresponding source `.ipc` file.
|
||||
|
||||
The format can be identified by the format magic, which is derived in [`Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp`](../../../../../Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp) from the service-endpoint name, e.g. "ClipboardClient" (which hashes to 4008793515) or "ClipboardServer" (which hashes to 1329211611).
|
||||
|
||||
In general, communication works by packets, which might have been sent in response to other packets. Everything is host endianness. Each packet consists of:
|
||||
- a 32-bit message size (see `Connection::try_parse_messages` in [`Userland/Libraries/LibIPC/Connection.h`](../Userland/Libraries/LibIPC/Connection.h))
|
||||
- a 32-bit message size (see `Connection::try_parse_messages` in [`Userland/Libraries/LibIPC/Connection.h`](../../../../../Userland/Libraries/LibIPC/Connection.h))
|
||||
- the 32-bit endpoint magic (note that responses use the endpoint of the requesting packet, so the Clipboard server might use the endpoint magic 4008793515 to signal that this packet is a response)
|
||||
- the 32-bit message ID within that endpoint (sequentially assigned, starting at 1)
|
||||
- the data of that message itself (e.g. see `Messages::ClipboardServer::SetClipboardData::{en,de}code` in `Build/*/Userland/Services/Clipboard/ClipboardServerEndpoint.h`).
|
||||
|
||||
## See Also
|
||||
|
||||
- [ipc(5)](help://man/5/ipc) (IPC file format documentation)
|
|
@ -14,3 +14,4 @@ The format is loosely inspired by C++ headers.
|
|||
## See Also
|
||||
|
||||
- [`Meta/Lagom/Tools/CodeGenerators/IPCCompiler/`](../../../../../Meta/Lagom/Tools/CodeGenerators/IPCCompiler/).
|
||||
- [ipc(4)](help://man/4/ipc) (IPC Unix socket documentation)
|
||||
|
|
Loading…
Reference in a new issue