ipc - Unix socket Inter Process Communication protocols
IPC endpoints are provided as Unix sockets in /tmp/portal
. All services have their own formats, automatically implemented through LibIPC.
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
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:
Connection::try_parse_messages
in Userland/Libraries/LibIPC/Connection.h
)Messages::ClipboardServer::SetClipboardData::{en,de}code
in Build/*/Userland/Services/Clipboard/ClipboardServerEndpoint.h
).