X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=io_uring_engine.h;h=c165a40f51df19f2054ff6210d526e52c2e3e3fb;hb=99a0a43a777176583f3525e11ef62185dd2be740;hp=93e7a0dc22c21b79fc21a9cdb63c608e9c3d1348;hpb=009ba1838c9185844acd34458ef863828b8ab143;p=plocate diff --git a/io_uring_engine.h b/io_uring_engine.h index 93e7a0d..c165a40 100644 --- a/io_uring_engine.h +++ b/io_uring_engine.h @@ -3,36 +3,45 @@ #include #include -#include -#include +#include +#include +#include +#include + +struct io_uring_sqe; +#ifndef WITHOUT_URING #include +#endif class IOUringEngine { public: - IOUringEngine(); - void submit_read(int fd, size_t len, off_t offset, std::function cb); + IOUringEngine(size_t slop_bytes); + void submit_read(int fd, size_t len, off_t offset, std::function cb); void finish(); size_t get_waiting_reads() const { return pending_reads + queued_reads.size(); } private: - void submit_read_internal(io_uring_sqe *sqe, int fd, size_t len, off_t offset, std::function cb); +#ifndef WITHOUT_URING + void submit_read_internal(io_uring_sqe *sqe, int fd, size_t len, off_t offset, std::function cb); io_uring ring; +#endif size_t pending_reads = 0; // Number of requests we have going in the ring. bool using_uring; + const size_t slop_bytes; struct QueuedRead { int fd; size_t len; off_t offset; - std::function cb; + std::function cb; }; std::queue queued_reads; struct PendingRead { void *buf; size_t len; - std::function cb; + std::function cb; // For re-submission. int fd;