mio_st/event/
mod.rs

1//! Readiness event types and utilities.
2
3mod evented;
4mod events;
5mod id;
6mod ready;
7
8pub use self::evented::Evented;
9pub use self::events::Events;
10pub use self::id::EventedId;
11pub use self::ready::Ready;
12
13/// A readiness event.
14///
15/// `Event` is a [readiness state] paired with a [`EventedId`]. It is returned by
16/// [`Poller.poll`].
17///
18/// For more documentation on polling and events, see [`Poller`].
19///
20/// # Examples
21///
22/// ```
23/// use mio_st::event::{Event, EventedId, Ready};
24///
25/// let event = Event::new(EventedId(0), Ready::READABLE | Ready::WRITABLE);
26///
27/// assert_eq!(event.id(), EventedId(0));
28/// assert_eq!(event.readiness(), Ready::READABLE | Ready::WRITABLE);
29/// ```
30///
31/// [readiness state]: struct.Ready.html
32/// [`EventedId`]: struct.EventedId.html
33/// [`Poller.poll`]: ../poll/struct.Poller.html#method.poll
34/// [`Poller`]: ../poll/struct.Poller.html
35#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
36pub struct Event {
37    id: EventedId,
38    readiness: Ready,
39}
40
41impl Event {
42    /// Creates a new `Event` containing `id` and `readiness`.
43    pub fn new(id: EventedId, readiness: Ready) -> Event {
44        Event { id, readiness }
45    }
46
47    /// Returns the event's id.
48    pub fn id(&self) -> EventedId {
49        self.id
50    }
51
52    /// Returns the event's readiness.
53    pub fn readiness(&self) -> Ready {
54        self.readiness
55    }
56}
57
58#[cfg(test)]
59mod tests {
60    use crate::event::{Event, EventedId, Ready};
61
62    #[test]
63    fn event() {
64        let event = Event::new(EventedId(0), Ready::READABLE);
65        assert_eq!(event.id(), EventedId(0));
66        assert_eq!(event.readiness(), Ready::READABLE);
67    }
68
69    #[test]
70    fn equality() {
71        let event = Event::new(EventedId(0), Ready::WRITABLE);
72        assert_eq!(event, event.clone());
73
74        // Same
75        let event2 = Event::new(EventedId(0), Ready::WRITABLE);
76        assert_eq!(event, event2);
77
78        // Different id.
79        let event3 = Event::new(EventedId(1), Ready::WRITABLE);
80        assert_ne!(event, event3);
81
82        // Different readiness.
83        let event4 = Event::new(EventedId(0), Ready::READABLE);
84        assert_ne!(event, event4);
85    }
86}