pub struct Subscription<T> { /* private fields */ }
Expand description
A Subscription is a feed of notifications from the server of a specific
type T
, identified by a local ID.
For flexibility, we expose three similar APIs:
- The
Subscription::recv
method and its variants will discard any notifications of unexpected types. - The
Subscription::recv_any
and its variants will yield unexpected types asSubscriptionItem::Other
. - The
Subscription::recv_result
and its variants will attempt to deserialize the notifications and yield theserde_json::Result
of the deserialization.
Implementations§
Source§impl<T> Subscription<T>
impl<T> Subscription<T>
Sourcepub fn into_raw(self) -> RawSubscription
pub fn into_raw(self) -> RawSubscription
Convert the subscription into its inner RawSubscription
.
Sourcepub const fn inner(&self) -> &RawSubscription
pub const fn inner(&self) -> &RawSubscription
Get a reference to the inner subscription.
Sourcepub fn inner_mut(&mut self) -> &mut RawSubscription
pub fn inner_mut(&mut self) -> &mut RawSubscription
Get a mutable reference to the inner subscription.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true
if the broadcast channel is empty (i.e. there are
currently no notifications to receive).
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of messages in the broadcast channel that this receiver has yet to receive.
NB: This count may include messages of unexpected types that will be discarded upon receipt.
Sourcepub fn resubscribe_inner(&self) -> RawSubscription
pub fn resubscribe_inner(&self) -> RawSubscription
Wrapper for resubscribe
. Create a new RawSubscription
, starting
from the current tail element.
Sourcepub fn resubscribe(&self) -> Self
pub fn resubscribe(&self) -> Self
Wrapper for resubscribe
. Create a new Subscription
, starting from
the current tail element.
Sourcepub fn same_channel<U>(&self, other: &Subscription<U>) -> bool
pub fn same_channel<U>(&self, other: &Subscription<U>) -> bool
Wrapper for same_channel
. Returns true
if the two subscriptions
share the same broadcast channel.
Source§impl<T: DeserializeOwned> Subscription<T>
impl<T: DeserializeOwned> Subscription<T>
Sourcepub fn blocking_recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
pub fn blocking_recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
Wrapper for blocking_recv
, may produce unexpected values. Block the
current thread until a message is available.
Sourcepub async fn recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
pub async fn recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
Wrapper for recv
, may produce unexpected values. Await an item from
the channel.
Sourcepub fn try_recv_any(&mut self) -> Result<SubscriptionItem<T>, TryRecvError>
pub fn try_recv_any(&mut self) -> Result<SubscriptionItem<T>, TryRecvError>
Wrapper for try_recv
. Attempt to receive a message from the channel
without awaiting.
Sourcepub fn into_stream(self) -> SubscriptionStream<T>
pub fn into_stream(self) -> SubscriptionStream<T>
Convert the subscription into a stream.
Errors are logged and ignored.
Sourcepub fn into_result_stream(self) -> SubResultStream<T>
pub fn into_result_stream(self) -> SubResultStream<T>
Convert the subscription into a stream that returns deserialization results.
Sourcepub fn into_any_stream(self) -> SubAnyStream<T>
pub fn into_any_stream(self) -> SubAnyStream<T>
Convert the subscription into a stream that may yield unexpected types.
Sourcepub fn blocking_recv(&mut self) -> Result<T, RecvError>
pub fn blocking_recv(&mut self) -> Result<T, RecvError>
Wrapper for blocking_recv
. Block the current thread until a message
of the expected type is available.
Sourcepub async fn recv(&mut self) -> Result<T, RecvError>
pub async fn recv(&mut self) -> Result<T, RecvError>
Wrapper for recv
. Await an item of the expected type from the
channel.
Sourcepub fn try_recv(&mut self) -> Result<T, TryRecvError>
pub fn try_recv(&mut self) -> Result<T, TryRecvError>
Wrapper for try_recv
. Attempt to receive a message of the expected
type from the channel without awaiting.
Sourcepub fn blocking_recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
pub fn blocking_recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
Wrapper for blocking_recv
. Block the current thread until a message
is available, deserializing the message and returning the result.
Sourcepub async fn recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
pub async fn recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
Wrapper for recv
. Await an item from the channel, deserializing the
message and returning the result.
Sourcepub fn try_recv_result(&mut self) -> Result<Result<T, Error>, TryRecvError>
pub fn try_recv_result(&mut self) -> Result<Result<T, Error>, TryRecvError>
Wrapper for try_recv
. Attempt to receive a message from the channel
without awaiting, deserializing the message and returning the result.