Vendor dependencies
Let's see how I like this workflow.
This commit is contained in:
parent
34d1830413
commit
9c435dc440
7500 changed files with 1665121 additions and 99 deletions
230
vendor/mio/src/event/events.rs
vendored
Normal file
230
vendor/mio/src/event/events.rs
vendored
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
use crate::event::Event;
|
||||
use crate::sys;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
/// A collection of readiness events.
|
||||
///
|
||||
/// `Events` is passed as an argument to [`Poll::poll`] and will be used to
|
||||
/// receive any new readiness events received since the last poll. Usually, a
|
||||
/// single `Events` instance is created at the same time as a [`Poll`] and
|
||||
/// reused on each call to [`Poll::poll`].
|
||||
///
|
||||
/// See [`Poll`] for more documentation on polling.
|
||||
///
|
||||
/// [`Poll::poll`]: ../struct.Poll.html#method.poll
|
||||
/// [`Poll`]: ../struct.Poll.html
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
#[cfg_attr(feature = "os-poll", doc = "```")]
|
||||
#[cfg_attr(not(feature = "os-poll"), doc = "```ignore")]
|
||||
/// # use std::error::Error;
|
||||
/// # fn main() -> Result<(), Box<dyn Error>> {
|
||||
/// use mio::{Events, Poll};
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let mut events = Events::with_capacity(1024);
|
||||
/// let mut poll = Poll::new()?;
|
||||
/// #
|
||||
/// # assert!(events.is_empty());
|
||||
///
|
||||
/// // Register `event::Source`s with `poll`.
|
||||
///
|
||||
/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
|
||||
///
|
||||
/// for event in events.iter() {
|
||||
/// println!("Got an event for {:?}", event.token());
|
||||
/// }
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub struct Events {
|
||||
inner: sys::Events,
|
||||
}
|
||||
|
||||
/// [`Events`] iterator.
|
||||
///
|
||||
/// This struct is created by the [`iter`] method on [`Events`].
|
||||
///
|
||||
/// [`Events`]: struct.Events.html
|
||||
/// [`iter`]: struct.Events.html#method.iter
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
#[cfg_attr(feature = "os-poll", doc = "```")]
|
||||
#[cfg_attr(not(feature = "os-poll"), doc = "```ignore")]
|
||||
/// # use std::error::Error;
|
||||
/// # fn main() -> Result<(), Box<dyn Error>> {
|
||||
/// use mio::{Events, Poll};
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let mut events = Events::with_capacity(1024);
|
||||
/// let mut poll = Poll::new()?;
|
||||
///
|
||||
/// // Register handles with `poll`.
|
||||
///
|
||||
/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
|
||||
///
|
||||
/// for event in events.iter() {
|
||||
/// println!("Got an event for {:?}", event.token());
|
||||
/// }
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Iter<'a> {
|
||||
inner: &'a Events,
|
||||
pos: usize,
|
||||
}
|
||||
|
||||
impl Events {
|
||||
/// Return a new `Events` capable of holding up to `capacity` events.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use mio::Events;
|
||||
///
|
||||
/// let events = Events::with_capacity(1024);
|
||||
/// assert_eq!(1024, events.capacity());
|
||||
/// ```
|
||||
pub fn with_capacity(capacity: usize) -> Events {
|
||||
Events {
|
||||
inner: sys::Events::with_capacity(capacity),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the number of `Event` values that `self` can hold.
|
||||
///
|
||||
/// ```
|
||||
/// use mio::Events;
|
||||
///
|
||||
/// let events = Events::with_capacity(1024);
|
||||
/// assert_eq!(1024, events.capacity());
|
||||
/// ```
|
||||
pub fn capacity(&self) -> usize {
|
||||
self.inner.capacity()
|
||||
}
|
||||
|
||||
/// Returns `true` if `self` contains no `Event` values.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use mio::Events;
|
||||
///
|
||||
/// let events = Events::with_capacity(1024);
|
||||
/// assert!(events.is_empty());
|
||||
/// ```
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.inner.is_empty()
|
||||
}
|
||||
|
||||
/// Returns an iterator over the `Event` values.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
#[cfg_attr(feature = "os-poll", doc = "```")]
|
||||
#[cfg_attr(not(feature = "os-poll"), doc = "```ignore")]
|
||||
/// # use std::error::Error;
|
||||
/// # fn main() -> Result<(), Box<dyn Error>> {
|
||||
/// use mio::{Events, Poll};
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let mut events = Events::with_capacity(1024);
|
||||
/// let mut poll = Poll::new()?;
|
||||
///
|
||||
/// // Register handles with `poll`.
|
||||
///
|
||||
/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
|
||||
///
|
||||
/// for event in events.iter() {
|
||||
/// println!("Got an event for {:?}", event.token());
|
||||
/// }
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub fn iter(&self) -> Iter<'_> {
|
||||
Iter {
|
||||
inner: self,
|
||||
pos: 0,
|
||||
}
|
||||
}
|
||||
|
||||
/// Clearing all `Event` values from container explicitly.
|
||||
///
|
||||
/// # Notes
|
||||
///
|
||||
/// Events are cleared before every `poll`, so it is not required to call
|
||||
/// this manually.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
#[cfg_attr(feature = "os-poll", doc = "```")]
|
||||
#[cfg_attr(not(feature = "os-poll"), doc = "```ignore")]
|
||||
/// # use std::error::Error;
|
||||
/// # fn main() -> Result<(), Box<dyn Error>> {
|
||||
/// use mio::{Events, Poll};
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let mut events = Events::with_capacity(1024);
|
||||
/// let mut poll = Poll::new()?;
|
||||
///
|
||||
/// // Register handles with `poll`.
|
||||
///
|
||||
/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
|
||||
///
|
||||
/// // Clear all events.
|
||||
/// events.clear();
|
||||
/// assert!(events.is_empty());
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub fn clear(&mut self) {
|
||||
self.inner.clear();
|
||||
}
|
||||
|
||||
/// Returns the inner `sys::Events`.
|
||||
pub(crate) fn sys(&mut self) -> &mut sys::Events {
|
||||
&mut self.inner
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IntoIterator for &'a Events {
|
||||
type Item = &'a Event;
|
||||
type IntoIter = Iter<'a>;
|
||||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
self.iter()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Iterator for Iter<'a> {
|
||||
type Item = &'a Event;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let ret = self
|
||||
.inner
|
||||
.inner
|
||||
.get(self.pos)
|
||||
.map(Event::from_sys_event_ref);
|
||||
self.pos += 1;
|
||||
ret
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
let size = self.inner.inner.len();
|
||||
(size, Some(size))
|
||||
}
|
||||
|
||||
fn count(self) -> usize {
|
||||
self.inner.inner.len()
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for Events {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.debug_list().entries(self).finish()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue