Skip to main content

Poller

Struct Poller 

Source
pub struct Poller { /* private fields */ }
Expand description

A readiness poller and the thread that owns its armed set.

One per server. Poller::shutdown stops the thread; dropping the last handle does the same.

Implementations§

Source§

impl Poller

Source

pub fn new(name: &str, priority: ThreadPriority) -> Result<Arc<Self>>

Start a poller and its thread.

name is the thread name, which is what an epicsThreadShowAll equivalent prints; keep it short.

priority is the caller’s, not this module’s: the poll thread is the reactor of whatever server owns it, and a server’s band is set against the other servers in the IOC — pvxs runs its TCP reactor at CAServerLow-2, CA’s rsrv its own ladder from caservertask.c. A constant here would put every server’s reactor in one band and silently undo that ordering.

Source

pub fn stream(self: &Arc<Self>, stream: TcpStream) -> Result<ReadyStream>

Wrap an accepted socket so the protocol code can read and write it through this poller.

Source

pub fn shutdown(&self)

Stop the poll thread. Idempotent.

Source

pub fn armed_fds(&self) -> usize

How many fds currently hold at least one armed interest. Test and report surface; not a control input.

An fd whose last waker has been taken but whose kernel registration is still queued for deletion is not one of them. The count is of tasks parked here, which is the question a report is asking.

Trait Implementations§

Source§

impl Drop for Poller

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where 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 T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more