Struct tokio_util::sync::PollSender
source · [−]pub struct PollSender<T> { /* private fields */ }
Expand description
A wrapper around mpsc::Sender
that can be polled.
Implementations
sourceimpl<T: Send + 'static> PollSender<T>
impl<T: Send + 'static> PollSender<T>
sourcepub fn start_send(&mut self, value: T) -> Result<(), SendError<T>>
pub fn start_send(&mut self, value: T) -> Result<(), SendError<T>>
Start sending a new item.
This method panics if a send is currently in progress. To ensure that no
send is in progress, call poll_send_done
first until it returns
Poll::Ready
.
If this method returns an error, that indicates that the channel is
closed. Note that this method is not guaranteed to return an error if
the channel is closed, but in that case the error would be reported by
the first call to poll_send_done
.
sourcepub fn poll_send_done(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), SendError<T>>>
pub fn poll_send_done(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), SendError<T>>>
If a send is in progress, poll for its completion. If no send is in progress,
this method returns Poll::Ready(Ok(()))
.
This method can return the following values:
Poll::Ready(Ok(()))
if the in-progress send has been completed, or there is no send in progress (even if the channel is closed).Poll::Ready(Err(err))
if the in-progress send failed because the channel has been closed.Poll::Pending
if a send is in progress, but it could not complete now.
When this method returns Poll::Pending
, the current task is scheduled
to receive a wakeup when the message is sent, or when the entire channel
is closed (but not if just this sender is closed by
close_this_sender
). Note that on multiple calls to poll_send_done
,
only the Waker
from the Context
passed to the most recent call is
scheduled to receive a wakeup.
If this method returns Poll::Ready
, then start_send
is guaranteed to
not panic.
sourcepub fn is_ready(&self) -> bool
pub fn is_ready(&self) -> bool
Check whether the channel is ready to send more messages now.
If this method returns true
, then start_send
is guaranteed to not
panic.
If the channel is closed, this method returns true
.
sourcepub fn clone_inner(&self) -> Option<Sender<T>>
pub fn clone_inner(&self) -> Option<Sender<T>>
Clone the underlying Sender
.
If this method returns None
, then the channel is closed. (But it is
not guaranteed to return None
if the channel is closed.)
sourcepub fn inner_ref(&self) -> Option<&Sender<T>>
pub fn inner_ref(&self) -> Option<&Sender<T>>
Access the underlying Sender
.
If this method returns None
, then the channel is closed. (But it is
not guaranteed to return None
if the channel is closed.)
sourcepub fn close_this_sender(&mut self)
pub fn close_this_sender(&mut self)
Close this sender. No more messages can be sent from this sender.
Note that this only closes the channel from the view-point of this
sender. The channel remains open until all senders have gone away, or
until the Receiver
closes the channel.
If there is a send in progress when this method is called, that send is
unaffected by this operation, and poll_send_done
can still be called
to complete that send.
sourcepub fn abort_send(&mut self) -> bool
pub fn abort_send(&mut self) -> bool
Abort the current in-progress send, if any.
Returns true
if a send was aborted.
Trait Implementations
sourceimpl<T> Clone for PollSender<T>
impl<T> Clone for PollSender<T>
sourcefn clone(&self) -> PollSender<T>
fn clone(&self) -> PollSender<T>
Clones this PollSender
. The resulting clone will not have any
in-progress send operations, even if the current PollSender
does.
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<T: Debug> Debug for PollSender<T>
impl<T: Debug> Debug for PollSender<T>
sourceimpl<T: Send + 'static> Sink<T> for PollSender<T>
impl<T: Send + 'static> Sink<T> for PollSender<T>
sourcefn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
fn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
This is equivalent to calling poll_send_done
.
sourcefn poll_flush(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
fn poll_flush(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
This is equivalent to calling poll_send_done
.
sourcefn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>
fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>
This is equivalent to calling start_send
.
sourcefn poll_close(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
fn poll_close(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
This method will first flush the PollSender
, and then close it by
calling close_this_sender
.
If a send fails while flushing because the Receiver
has gone away,
then this function returns an error. The channel is still successfully
closed in this situation.
Auto Trait Implementations
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more