Expand description
§mio-wakeq
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.
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!(),
}
}Structs§
- EventId
- Event Id to specify uniqiue custom Event
- EventQ
- Events storage and processor
- EventQ
Iterator - Event’s iterator for the pendings events from
EventQ - EventQ
Sender - Event Sender for the event trigerring mechanism.
- WakeQ
- Waker Queue for custom type message
- WakeQ
Sender - Queue Sender for the custom type message