Struct tokio_util::sync::mpsc::PollSender

source ·
pub struct PollSender<T> {
    sender: Option<Sender<T>>,
    state: State<T>,
    acquire: PollSenderFuture<T>,
}
Expand description

A wrapper around mpsc::Sender that can be polled.

Fields§

§sender: Option<Sender<T>>§state: State<T>§acquire: PollSenderFuture<T>

Implementations§

source§

impl<T: Send> PollSender<T>

source

pub fn new(sender: Sender<T>) -> Self

Creates a new PollSender.

source

fn take_state(&mut self) -> State<T>

source

pub fn poll_reserve( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), PollSendError<T>>>

Attempts to prepare the sender to receive a value.

This method must be called and return Poll::Ready(Ok(())) prior to each call to send_item.

This method returns Poll::Ready once the underlying channel is ready to receive a value, by reserving a slot in the channel for the item to be sent. If this method returns Poll::Pending, the current task is registered to be notified (via cx.waker().wake_by_ref()) when poll_reserve should be called again.

§Errors

If the channel is closed, an error will be returned. This is a permanent state.

source

pub fn send_item(&mut self, value: T) -> Result<(), PollSendError<T>>

Sends an item to the channel.

Before calling send_item, poll_reserve must be called with a successful return value of Poll::Ready(Ok(())).

§Errors

If the channel is closed, an error will be returned. This is a permanent state.

§Panics

If poll_reserve was not successfully called prior to calling send_item, then this method will panic.

source

pub fn is_closed(&self) -> bool

Checks whether this sender is been closed.

The underlying channel that this sender was wrapping may still be open.

source

pub fn get_ref(&self) -> Option<&Sender<T>>

Gets a reference to the Sender of the underlying channel.

If PollSender has been closed, None is returned. The underlying channel that this sender was wrapping may still be open.

source

pub fn close(&mut self)

Closes this sender.

No more messages will be able to be sent from this sender, but the underlying channel will remain open until all senders have dropped, or until the Receiver closes the channel.

If a slot was previously reserved by calling poll_reserve, then a final call can be made to send_item in order to consume the reserved slot. After that, no further sends will be possible. If you do not intend to send another item, you can release the reserved slot back to the underlying sender by calling abort_send.

source

pub fn abort_send(&mut self) -> bool

Aborts the current in-progress send, if any.

Returns true if a send was aborted. If the sender was closed prior to calling abort_send, then the sender will remain in the closed state, otherwise the sender will be ready to attempt another send.

Trait Implementations§

source§

impl<T> Clone for PollSender<T>

source§

fn clone(&self) -> PollSender<T>

Clones this PollSender.

The resulting PollSender will have an initial state identical to calling PollSender::new.

1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for PollSender<T>

source§

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

Formats the value using the given formatter. Read more
source§

impl<T: Send> Sink<T> for PollSender<T>

source§

type Error = PollSendError<T>

The type of value produced by the sink when an error occurs.
source§

fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Attempts to prepare the Sink to receive a value. Read more
source§

fn poll_flush( self: Pin<&mut Self>, _cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Flush any remaining output from this sink. Read more
source§

fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>

Begin the process of sending a value to the sink. Each call to this function must be preceded by a successful call to poll_ready which returned Poll::Ready(Ok(())). Read more
source§

fn poll_close( self: Pin<&mut Self>, _cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Flush any remaining output and close this sink, if necessary. Read more

Auto Trait Implementations§

§

impl<T> Freeze for PollSender<T>

§

impl<T> !RefUnwindSafe for PollSender<T>

§

impl<T> Send for PollSender<T>
where T: Send,

§

impl<T> Sync for PollSender<T>
where T: Send,

§

impl<T> Unpin for PollSender<T>

§

impl<T> !UnwindSafe for PollSender<T>

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 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> ToOwned for T
where T: Clone,

source§

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

source§

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