mio-wakeq 0.1.0

mio support for custom event queue via Waker
Documentation
  • Coverage
  • 100%
    15 out of 15 items documented1 out of 15 items with examples
  • Size
  • Source code size: 21.8 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.52 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 15s Average build duration of successful builds.
  • all releases: 15s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • okedax/mio-wakeq
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • okedax

mio-wakeq

CI crates.io docs.rs Rust Version License

A simple custom event delivery mechanism based on mio's Waker functionality for mio-based systems. mio's Poll is limited to a single Waker, which restricts it to handling only one type of external event. However, mio-wakeq allows multiple events to be managed and exposed through a single Waker within the same Poll instance.

example

use mio::{Events, Poll, Token};
use mio_wakeq::{EventId, EventQ, WakeQ};

const WAKER: Token = Token(0);
const EVENT0: EventId = EventId(0);

let mut poll = Poll::new().unwrap();
let wakeq = EventQ::new(&poll, WAKER, 8).unwrap();

let event_sender = wakeq.get_sender();
std::thread::spawn(move || {
    event_sender.trigger_event(EVENT0);
});

let mut events = Events::with_capacity(32);
poll.poll(&mut events, None).unwrap();

for event in events.iter() {
    match event.token() {
        WAKER => {
            for wev in wakeq.triggered_events() {
                assert_eq!(wev, EVENT0);
            }
        }

        _ => unimplemented!(),
    }
}