Obsolete
/
libipc-old
Archived
3
0
Fork 0
more_to_read
Philippe PITTOLI 2016-12-14 22:29:36 +01:00
parent 7678a8ab7a
commit 091d01ef58
1 changed files with 13 additions and 28 deletions

View File

@ -2,34 +2,27 @@
## how things happen
* Service : daemon providing a feature (windowing, audio, …)
* Application : specific application (browser, instant messaging, …)
* Service: daemon providing a feature (windowing, audio, pubsub, …)
* Application: specific application (browser, instant messaging, …)
* [service] : service name
* $pid : application PID
* $index : process index (application point of view)
* service: service name
* index: process index (to launch a service several times)
* version: service version
1. Service creates a pipe named /tmp/[service]
2. Application creates pipes named /tmp/$pid-$index-$version-{in,out}
3. Application sends in /tmp/[service] : $pid $index $version
1. Service creates a unix socket /tmp/service-index-version.sock
2. Application connects to /tmp/service-index-version.sock
## pure "networking" view (what should go in the pipes)
## pure "networking" view (what should go in the sockets)
1. Application sends in /tmp/[service] : $pid $index $version [...]
1. Application connects to /tmp/service-index-version.sock
1. Service acknowledges (empty message)
# messages format
First of all, the application will send a message to the service's pipe in **plain text** with its PID, the number of time the process already used the service (index) and the version of the communication protocol we want to use between the application and the service.
In order to communicate between the application and the service, we use the [CBOR format (RFC 7049)][cbor].
In order to communicate between the application and the service, we use the Type-Length-Value format.
This will be used with some conventions.
## CBOR install, programming, debug
[libcbor][libcbor] is used in the provided implementations.
It is an [extensively documented][libcbor-doc] library, easy to install and to work with.
We also strongly encourage the use of the [cbor-diag][cbor-diag] to ensure that you send and receive correctly formatted messages.
## programming, debug
## overview
@ -41,16 +34,8 @@ The type will be a simple byte :
* <16 - 127> : later use
* <128 - 255> : application specific (windowing system, audio system, …)
## CBOR type convention
0 - 15
index | abbreviation | semantic
0 | close | to close the communication between the application and the service
1 | message | to send data
2 | error | to send an error message
[cbor]: https://tools.ietf.org/html/rfc7049
[cbor-diag]: https://github.com/cabo/cbor-diag
[libcbor]: https://github.com/PJK/libcbor
[libcbor-doc]: https://github.com/PJK/libcbor
3 | ack | to send an acknowledgment