felspar-io Implementation
The contains three implementations:
- POSIX using
poll
- Windows using
WSAPoll
- Linux's io_uring
The poll
and WSAPoll
are similar, but not identical. The main part of the implementation is in:
poll.hpp
— Common header containing completion tracking and common retry and cancellation code.poll.iops.cpp
— Implementation of the individual IOP APIs.poll.warden.cpp
— Implementation of the poll loop itself together with other code needed to have everything work.
The differences between poll
and WSAPoll
are handled through #if
blocks.
There is a separate implementation io_uring
in the following files:
uring.hpp
— IOP delivery and completion header file.uring.iops.cpp
— Implementation of the various IOPs.uring.warden.cpp
— The io_uring submission and completion loop.
Other files
convenience.cpp
— Contains a few helpers.posix.cpp
— Contains wrappers for some common POSIX APIs.tls.cpp
— Contains an implementation of TLS using OpenSSL.warden.cpp
— Common warden code (creating sockets and pipes).