odyssey/sources/README.md

21 lines
883 B
Markdown
Raw Normal View History

2017-07-17 10:32:14 +00:00
### Odissey internals
Odissey heavily depends on two libraries, which were originally
been created during its development: [machinarium](https://github.yandex-team.ru/pmwkaa/machinarium) and
[shapito](https://github.yandex-team.ru/pmwkaa/shapito).
**Machinarium**
Machinarium extensively used for organization of multi-thread processing and networking IO.
All Odissey threads are run in context of machinarium `machines` - pthreads with coroutine schedulers
placed on top of `epoll(2)`.
Odissey does not directly use or create multi-tasking primitives such as mutexes. All synchronization
is done using message passing and transparently implemented by machinarium.
**Shapito**
Shapito provides resizable buffers (streams) and methods for constructing, reading and validating
PostgreSQL protocol requests. All PostgreSQL specific details should be provided by Shapito library.