Skip to content

cyanide-burnout/FastRing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Event multiplexing library for io_uring

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published