Skip to content
  • Florian Fischer's avatar
    [IO] restructure IO subsystem · 6c05f216
    Florian Fischer authored
    Split up and move all IO related code into emper/io.
    The intended way to use emper's IO subsystem is by including either
    the io.hpp for C++ or the emper.h header for C code.
    
    All components of the IO subsystem are now encapsulated in emper::io::IoContext.
    An IoContext consists of a io_uring, an Actor to submit requests to the io_uring,
    a thread that collects cqes from the io_uring and unblocks waiting fibers as
    well as some debug and statistic variables.
    
    In theory there could exist more than on IoContext but the public IO
    API defined in io.hpp will use the one created and set by the runtime.
    
    When a runtime is instantiated it will create a new IoContext which will
    schedule a SubmitActor and start the completion thread.
    This means the IoContext must be created after the Scheduler.
    6c05f216