HarryR / HarryR/logpipe

Event loop for asynchronous I/O processing

Open
#4 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.