Skip to content

Network Transport Framework

Matt Millett edited this page Apr 26, 2023 · 1 revision

Roadmap

The following outline describes the future direction of the project and general things to-do.

  • Features
    • Implement something like "send all" and "receive all" functions for ntsi::StreamSocket to provide convenience to users of blocking sockets to send/receive all desired data possibly over multiple system calls
    • Support the specification of relative timeouts when describing deadlines for timers and socket operations
    • Support zero-copy transmissions on Linux
    • Support sending and receiving multiple datagram messages in a single system call, where supported (sengmmsg/recvmmsg)
    • Implement ntco::IoRing on Windows using their API
  • Fixes
    • Detach a socket from a reactor asynchronously
    • Cancel all pending operations on a ntci::ProactorSocket asynchronously
  • Optimization
    • Allow the user to mask the announcement of certain "events" detected passively during the operation of an asynchronous socket
    • Improve the implementation of ntci::Reactor using io_uring on Linux
    • Attempt to split the single mutex used by, e.g., ntcr::StreamSocket into two mutexes, one for reading and one for writing, so that readers don't block writers and vice-versa
    • Revise the virtual write queue data structures so that any potentially-batchable buffer array is built/adjusted at the time each send operation is initiated, rather than re-built from scratch each time a socket is detected to be writable
  • Operations
    • Re-establish a contiguous integration process in an open-source context, possibly using GitHub Actions
    • Integrate with certain popular package managers (e.g. debian, rpm, conan, vcpkg, etc.)
    • Adopt the new BDE build system to replace the old BDE build system as an alternate method for build this project
Clone this wiki locally