Event loop for asynchronous I/O processing
- Dominant language
- C
- Stars
- 4
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
The goal is to implement Redis, ZMQ and HTTP support to publish log entries very quickly to external sources. This requires a robust event loop so that Redis requests can be pipelined and I/O won't block during any of the steps.
Requirements:
- Compatible with many platforms
- Integrates easily with `hiredis` and `libzmq`
- Easy to make a HTTP client
Candidates:
- `libuv` - very robust and supports IOCP on Windows. Doesn't have a HTTP client library.
- `libevent` includes a HTTP client library, but doesn't fully support Windows.
- `libev` doesn't include a HTTP client and doesn't fully support Windows.
libevent is the primary candidate because it includes a HTTP client library and I have experience working with it in the past.
Modifications needed:
- Module initialisation function needs to be passed an event loop handle
- Module shutdown function should use it's own context to shutdown correctly
Possible problems:
- How to ensure that all data is flushed when the pipeline is shutdown, without starving the I/O of other modules.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.