Obsolete
/
libipc-old
Archived
3
0
Fork 0
more_to_read
Philippe PITTOLI 2017-01-04 15:12:33 +01:00
parent 149fb19fc5
commit 9636d4be02
1 changed files with 12 additions and 12 deletions

View File

@ -1,4 +1,4 @@
# the problem # Problem
End-user applications are huge, with tons of libraries used and are a pain in the ass to maintain. End-user applications are huge, with tons of libraries used and are a pain in the ass to maintain.
Libraries are huge, with a lot of things happening, with changes that break everything on a regular basis, with almost each time very few people working on it. Libraries are huge, with a lot of things happening, with changes that break everything on a regular basis, with almost each time very few people working on it.
@ -11,7 +11,7 @@ Start a new project is not an easy task neither.
- Is this library working on every platform? - Is this library working on every platform?
- Are the libraries I need (and the good version) available for my platform, do I need to install SomeBullshitOS or ProtoContenerizator3000 to code? - Are the libraries I need (and the good version) available for my platform, do I need to install SomeBullshitOS or ProtoContenerizator3000 to code?
# how to change that ? # How to change that?
**Network protocols** **Network protocols**
@ -27,7 +27,7 @@ Just ask a service !
You want to download a file, you will always have the same input: a string corresponding to the file to get, such as _ftp://example.com/file.txt_. You want to download a file, you will always have the same input: a string corresponding to the file to get, such as _ftp://example.com/file.txt_.
You don't have to worry about the protocol to use in your own application, the burden is on the dedicated *downloading* service. You don't have to worry about the protocol to use in your own application, the burden is on the dedicated *downloading* service.
# benefits # Benefits
**Awesome abstractions**. **Awesome abstractions**.
@ -82,7 +82,7 @@ Still, we think performances won't be much of a problem for most of the everyday
- Services: daemons providing a feature (windowing, audio, network, input, pubsub, …) - Services: daemons providing a feature (windowing, audio, network, input, pubsub, …)
- Applications: end-user applications (browser, mail user agent, instant messaging app, …) - Applications: end-user applications (browser, mail user agent, instant messaging app, …)
#### examples #### Examples
A browser that can download everything, via every existing protocol. A browser that can download everything, via every existing protocol.
No any specific code in the browser itself and no configuration. No any specific code in the browser itself and no configuration.
@ -94,9 +94,9 @@ No specific code needed.
Figures, a lot of them, to explain everything. Figures, a lot of them, to explain everything.
# connection init (draft) # Connection init (draft)
## how things happen ## How things happen
1. Service creates a unix socket /tmp/service-index-version.sock 1. Service creates a unix socket /tmp/service-index-version.sock
1. Application connects to /tmp/service-index-version.sock 1. Application connects to /tmp/service-index-version.sock
@ -106,19 +106,19 @@ __legend__:
- index: process index (to launch a service several times) - index: process index (to launch a service several times)
- version: service version - version: service version
# pure "networking" view (what should go in the sockets) # Networking point of view (what should go in the sockets)
#### connection #### Connection
1. Application connects to /tmp/service-index-version.sock 1. Application connects to /tmp/service-index-version.sock
1. Service acknowledges (empty message) 1. Service acknowledges (empty message)
#### disconnection #### Disconnection
1. Application sends a message "CLOSE" to the server 1. Application sends a message "CLOSE" to the server
#### data #### Data
1. Application or server sends a message "DATA", no acknowledgement 1. Application or server sends a message "DATA", no acknowledgement
# messages format # Message formats
In order to communicate between the application and the service, we use the Type-Length-Value format. In order to communicate between the application and the service, we use the Type-Length-Value format.
This will be used with some conventions. This will be used with some conventions.
@ -136,7 +136,7 @@ The type will be a simple byte :
3 | ack | to send an acknowledgment 3 | ack | to send an acknowledgment
4 | message | to send data 4 | message | to send data
# Services Status # Service Status
Go to the relevant directory for details. Go to the relevant directory for details.