GitXplorerGitXplorer
p

aiopp

public
13 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
ff950b62c6aaf4c6533ea7923f40568594f79c4f

Remove stray spdlog include

ppfirsich committed a year ago
Unverified
839a6b5631e4420595b65371907089f2938a37ff

Clean up CMake build

ppfirsich committed a year ago
Unverified
40508855896626257e45114e66d51e08737f363b

Add building instructions

ppfirsich committed a year ago
Unverified
0304f7cfe6c4effb3ad102b55cc62db55892a0b3

Remove constexpr from IpAddressPort(sockaddr_in)

ppfirsich committed a year ago
Unverified
c3aea51827fdff59ec60c1d0ff4a6715472c3dec

Add proxy-coro example

ppfirsich committed a year ago
Unverified
ef5e5584744dfec0970f4f5aa3ed28c0f8db8295

Add WaitAll and WaitAny

ppfirsich committed a year ago

README

The README file for this repository.

aiopp

This is a library for asynchronous IO using io_uring for C++20. Most of the code in this repository was once part of liburingpp and htcpp and some of it is still in there until it is properly integrated into this repository (mostly TLS related).

It provides an IoQueue abstraction to issue IO operations with completion callbacks (see examples).

There is also early support for issuing IO operations on an IoQueue using coroutines, examples of which can also be found in the examples directory.

Building

It's a pretty boring CMake project, but it simply uses find_path/find_library to find liburing and find_package to find spdlog and fmt, so make sure to install those with your system package manager. On PopOS they are named liburing-dev, libspdlog-dev and libfmt-dev respectively.

Then just do "ye old CMake dance":

$ cmake -B build -G Ninja
$ cmake --build build

To Do

  • Optimize CompleterMap (linear probing is BAD) and CompleterMap is a bottleneck (~15% of runtime)
  • Multi-Shot Accept
  • Test if I can get rid of the whole callback path with just adding Awaitable::execute(Func func), i.e. if using it has any measurable cost, which I want to be able to avoid. If there is no significant cost, cut the whole callback path.
  • Figure out and finish timeouts and cancellation
  • Add an TcpStream and then SslStream.
  • Move all the TLS stuff from htcpp into this repository