X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=io_uring_engine.h;h=c165a40f51df19f2054ff6210d526e52c2e3e3fb;hb=e5c002a3c4d820774bdbe037a337f3c5c349d8d1;hp=232b636d73f1b6922cdd3f805c7593f3578870bc;hpb=94cd9258309ac4316632b0376cb92b04397e789f;p=plocate diff --git a/io_uring_engine.h b/io_uring_engine.h index 232b636..c165a40 100644 --- a/io_uring_engine.h +++ b/io_uring_engine.h @@ -3,41 +3,45 @@ #include #include -#include -#include +#include +#include +#include +#include + +struct io_uring_sqe; #ifndef WITHOUT_URING #include #endif -#include 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: #ifndef WITHOUT_URING - void submit_read_internal(io_uring_sqe *sqe, int fd, size_t len, off_t offset, std::function cb); + 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;