1
0
Fork 0
forked from wry/wry

io_uring: move runtime into workspace crate

This commit is contained in:
kossLAN 2026-05-29 09:22:59 -04:00
parent 03d3876888
commit c3b17db151
No known key found for this signature in database
22 changed files with 662 additions and 617 deletions

33
io-uring/src/debounce.rs Normal file
View file

@ -0,0 +1,33 @@
use {
crate::IoUringData,
jay_utils::numcell::NumCell,
std::{cell::Cell, future::poll_fn, rc::Rc, task::Poll},
};
pub struct Debouncer {
pub(super) cur: NumCell<u64>,
pub(super) max: u64,
pub(super) iteration: Cell<u64>,
pub(super) ring: Rc<IoUringData>,
}
impl Debouncer {
pub async fn debounce(&self) {
let iteration = self.ring.iteration.get();
if self.iteration.replace(iteration) != iteration {
self.cur.set(0);
}
if self.cur.fetch_add(1) > self.max {
poll_fn(|ctx| {
if self.ring.iteration.get() > iteration {
Poll::Ready(())
} else {
self.ring.yields.push(ctx.waker().clone());
Poll::Pending
}
})
.await;
self.cur.set(0);
}
}
}