https://github.com/cyanide-burnout/fastring
Event multiplexing library for io_uring
https://github.com/cyanide-burnout/fastring
c cpp iouring uring
Last synced: 2 months ago
JSON representation
Event multiplexing library for io_uring
- Host: GitHub
- URL: https://github.com/cyanide-burnout/fastring
- Owner: cyanide-burnout
- License: mit
- Created: 2023-12-01T11:30:16.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-13T20:31:56.000Z (about 1 year ago)
- Last Synced: 2024-04-14T10:56:49.690Z (about 1 year ago)
- Topics: c, cpp, iouring, uring
- Language: C
- Homepage:
- Size: 113 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FastRing
Event multiplexing library for io_uring
This is extract of my libraries I am using in my projects https://brandmeister.network and https://tetrapack.online
The library solves following problems:
- Submission/complition multiplexing
- Submission queue boundary control
- Events and handlers tracking, submission ordering
- Emulation of classic poll-based approach including handle watch and timers## FastRing
TBD
## FastBuffer
Fast buffer pool implementation especialy to use with FastRing
Check usage examples at FastBIO and FastSocket## CoRing
That is a small adapter to use in C++ coroutines with my Compromise library (https://github.com/cyanide-burnout/Compromise)
## FastGLoop
Adapter to incorporate Glib 2.0 main loop into FastRing. It creates green-thread / fiber for GLib by using ucontext.h.
- *CreateFastGLoop* - create a new instance of FastGLoop
- *ReleaseFastGLoop* - destroys FastGLoop
- *StopFastGLoop* - you optionally can call it before ReleaseFastGLoop when you need to make extra actions before destruction of GMainLoop.`struct FastGLoop` provides two attributes for be used in user code:
- `GMainLoop* loop`
- `GMainContext* context`## ThreadCall
Make a call to a handler running FastRing from any other thread
- *CreateThreadCall* - create a new ThreadCall
- *HoldThreadCall* - should be used by caller to increment weight (kind of reference counter) to hold the object
- *ReleaseThreadCall* - decrements weight, releases ThreadCall
- *FreeThreadCall* - simplified form of ReleaseThreadCall for caller, useful for callbacks
- *MakeVariadicThreadCall* / *MakeThreadCall* - makes a call## FastSocket
Generic socket I/O through FastRing
## FastBIO / SSLSocket
Asynchronous TLS and BIO on top of OpenSSL
## DBusCore
D-BUS adapter for FastRing
## WatchDog
WatchDog implementation for systemd
## LuaPoll
Bindings to liblua / luajit. Please read LuaPoll.txt
## Resolver
Bindings to DNS resolution library C-ARES
## LWSCore
WebSocket client library on top of libwebsockets, it uses main loop integration over Glib 2.0
## Fetch
CURL wrapper with asynchronous fetch using CURL's multi interface.