Archived
3
0
This commit is contained in:
Philippe PITTOLI 2017-01-04 15:12:33 +01:00
parent 149fb19fc5
commit 9636d4be02

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.
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?
- 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**
@ -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 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**.
@ -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, …)
- Applications: end-user applications (browser, mail user agent, instant messaging app, …)
#### examples
#### Examples
A browser that can download everything, via every existing protocol.
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.
# connection init (draft)
# Connection init (draft)
## how things happen
## How things happen
1. Service creates a unix socket /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)
- 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. Service acknowledges (empty message)
#### disconnection
#### Disconnection
1. Application sends a message "CLOSE" to the server
#### data
#### Data
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.
This will be used with some conventions.
@ -136,7 +136,7 @@ The type will be a simple byte :
3 | ack | to send an acknowledgment
4 | message | to send data
# Services Status
# Service Status
Go to the relevant directory for details.