mio-misc 2.1.0

Miscellaneous components for use with Mio
Documentation
use mio::{Interest, Token};
use mio_misc::poll::Poll;
use std::time::Duration;

mod test_poll_channel;
mod test_scheduler;

#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct TestEvent {
    token: Token,
    interest: Interest,
}

pub fn expect_events(poll: &mut Poll, poll_try_count: usize, mut expected: Vec<TestEvent>) {
    let poll_timeout = Duration::from_secs(2);

    for _ in 0..poll_try_count {
        let events = poll.poll(poll_timeout).unwrap();
        for event in events.iter() {
            let pos_opt = expected
                .iter()
                .position(|exp_event| event.token() == exp_event.token);
            if let Some(pos) = pos_opt {
                expected.remove(pos);
            }
        }

        if expected.is_empty() {
            break;
        }
    }

    assert!(
        expected.is_empty(),
        "The following expected events were not found: {:?}",
        expected
    );
}