Struct selecting::Selector

source ·
pub struct Selector { /* private fields */ }
Expand description

Select abstraction allowing you to monitor specified sockets.

Selector itself represents set of file descriptors to monitor, as such it is possible to copy it. Normally select modifies list of file descriptors, but Selector always copies existing list, avoiding these modifications.

Performance recommendations

Generally limited to 64 file descriptors, but you should only use select when you have ~10 fds otherwise modern API like kqueue or epoll would yield much better performance.

  • Call select only when getting would block from syscall;
  • Limit number of selects, allowing it to accumulate events;

Implementations§

source§

impl Selector

source

pub fn new() -> Self

Creates new instance with no sockets to monitor.

source

pub fn add_read<T: AsRawFd>(&mut self, source: &T)

Adds source to monitor for read ops.

Panics when goes over FD_LIMIT

source

pub fn add_write<T: AsRawFd>(&mut self, source: &T)

Adds source to monitor for write ops.

Panics when goes over FD_LIMIT

source

pub fn add_except<T: AsRawFd>(&mut self, source: &T)

Adds source to monitor for exceptional ops.

Panics when goes over FD_LIMIT

source

pub fn clear_read(&mut self)

Removes all fds from read monitoring

source

pub fn clear_write(&mut self)

Removes all fds from write monitoring

source

pub fn clear_except(&mut self)

Removes all fds from except monitoring

source

pub fn select(&self) -> Result<SelectResult>

Performs select, awaiting indefinitely until at least one descriptor has changes.

source

pub fn try_select(&self) -> Result<SelectResult>

Performs select, checking file descriptors for changes and returning immediately.

source

pub fn select_timeout(&self, time: Duration) -> Result<SelectResult>

Performs select, awaiting at most time until at least one descriptor has changes.

Trait Implementations§

source§

impl Clone for Selector

source§

fn clone(&self) -> Selector

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.