A network abstraction framework aimed at implementing different (multithreaded) multiplexing solutions, encapsulated by a common API. This is a project I work on in my free time. It may be useful to some, but I just have fun designing this framework :)
- C++20
- Linux >= 2.6.2 (Epoll introduced EPOLLONESHOT with this version)
- CMake
- Threads
- OpenSSL (I may relax this with a config option for people that don't want encrypted transport)
building the project is accomplished by doing
// On linux this is sufficient
./configure
// On MacOS the OpenSSL root directory must be specified
./configure --openssl-root-dir=$(brew --prefix openssl)
make -C build -j$(nproc)
If one wants to build tests, they have to be enabled explicitly
./configure --enable-testing
make -C build -j$(nproc)
make -C build test
There are many tests bundled with this project, but they may not provide a good base to start. Have a look at my benchmark repo where I actually put the whole stack to some use.
-
datagram_transport
-
multithreaded epoll implementation
- Check for race-conditions?!
-
io_uring implementation
-
EBPF?! - https://www.nginx.com/blog/our-roadmap-quic-http-3-support-nginx/
-
Logging utility?
- Should be configurable from the cmake scaffold