OLD IMPLEMENTATION.
The new one is in Zig and fucking ROCKS: https://git.baguette.netlib.re/Baguette/libipc
Inter-Process Communication library based on unix sockets.
lib | ||
init-connection.c | ||
Makefile | ||
open-read-close-fifo.c | ||
open-write-close-fifo.c | ||
README.markdown | ||
service-test.c |
connection init (draft)
what the programs should do and how they interact
-
service : application providing a feature to others (windows, audio, …)
-
program : specific application (browser, instant messaging, …)
-
: service name
-
: process index in the program point of view
-
: process index in the service point of view
- the service creates a pipe, named /tmp/
- the program creates pipes named /tmp/$pid--{in,out}
- the program prints in the pipe /tmp/ : $pid- version
- depending on the configuration and service type, the service will
- thread, to spare resources
- fork, not to compromise the security
- the service prints in /tmp/$pid--in
pure "networking" view (what should go in the pipes)
- the program prints in the pipe /tmp/ : $pid- version
- the service prints in /tmp/$pid--in
messages format
QUESTION : no CBOR for 1 & 2, or CBOR everywhere ?
overview
: value
will be a simple byte :
- <0 - 15> : control, meta data
- <16 - 127> : later use
- <128 - 255> : application specific (windowing system, audio system, …)
CBOR table (draft)
index | semantic