Struct calloop::Poll

source ·
pub struct Poll {
    poller: Epoll,
    tokens: VecMap<*mut Token>,
    pub(crate) timers: Rc<RefCell<TimerWheel>>,
}
Expand description

The polling system

This type represents the polling system of calloop, on which you can register your file descriptors. This interface is only accessible in implementations of the EventSource trait.

You only need to interact with this type if you are implementing your own event sources, while implementing the EventSource trait. And even in this case, you can often just use the Generic event source and delegate the implementations to it.

Fields§

§poller: Epoll§tokens: VecMap<*mut Token>§timers: Rc<RefCell<TimerWheel>>

Implementations§

source§

impl Poll

source

pub(crate) fn new(high_precision: bool) -> Result<Poll>

source

pub(crate) fn poll( &mut self, timeout: Option<Duration> ) -> Result<Vec<PollEvent>>

source

pub fn register( &mut self, fd: RawFd, interest: Interest, mode: Mode, token: Token ) -> Result<()>

Register a new file descriptor for polling

The file descriptor will be registered with given interest, mode and token. This function will fail if given a bad file descriptor or if the provided file descriptor is already registered.

Leaking tokens

If your event source is dropped without being unregistered, the token passed in here will remain on the heap and continue to be used by the polling system even though no event source will match it.

source

pub fn reregister( &mut self, fd: RawFd, interest: Interest, mode: Mode, token: Token ) -> Result<()>

Update the registration for a file descriptor

This allows you to change the interest, mode or token of a file descriptor. Fails if the provided fd is not currently registered.

See note on register() regarding leaking.

source

pub fn unregister(&mut self, fd: RawFd) -> Result<()>

Unregister a file descriptor

This file descriptor will no longer generate events. Fails if the provided file descriptor is not currently registered.

Trait Implementations§

source§

impl Debug for Poll

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Poll

§

impl !Send for Poll

§

impl !Sync for Poll

§

impl Unpin for Poll

§

impl !UnwindSafe for Poll

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, 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.