Currently od_worker_pool_feed function uses non-atomic access to
pool->round_robin variable. But od_worker_pool_feed function can be
called multiple time simultaneously from od_system_server, as odyssey
supports multiple listen addresses feauture, and no synchronization is
performed between concurrent listen coroutines. This entails data race, which
leads undefined behaviour in C/C++
This patch moves Odyssey from stream based write caching
to message driven. All write operations are delayed
and happen on a group of messages.
This removes necessity to do IO and wait for write completion during calls
from SSL_write() context. Write timings should behave more predictable now and
number of used syscalls should be also decreased.
This patch also simplifies caching management. All clients are simply
reusing cached messages without prolonged contention.
Several configuration options are no longer used:
pipeline, cache, cache_chunk