Skip to main content

OriginConsumer

Struct OriginConsumer 

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

Consumes announced broadcasts matching against an optional prefix.

NOTE: Clone is expensive, try to avoid it.

Implementations§

Source§

impl OriginConsumer

Source

pub async fn announced(&mut self) -> Option<OriginAnnounce>

Returns the next (un)announced broadcast and the absolute path.

The broadcast will only be announced if it was previously unannounced. The same path won’t be announced/unannounced twice, instead it will toggle. Returns None if the consumer is closed.

Note: The returned path is absolute and will always match this consumer’s prefix.

Source

pub fn try_announced(&mut self) -> Option<OriginAnnounce>

Returns the next (un)announced broadcast and the absolute path without blocking.

Returns None if there is no update available; NOT because the consumer is closed. You have to use is_closed to check if the consumer is closed.

Source

pub fn consume(&self) -> Self

Create another consumer with its own announcement cursor over the same origin.

Source

pub fn get_broadcast(&self, path: impl AsPath) -> Option<BroadcastConsumer>

Get a broadcast by path if it has already been announced.

Returns None when the path is unknown to this consumer right now. Synchronous lookup races announcement gossip — a freshly-connected consumer will see None even when the broadcast is about to arrive. Prefer Self::announced_broadcast (blocks until announced) unless you can guarantee the announcement has already landed (e.g. you’re responding to an announced() callback).

Source

pub async fn announced_broadcast( &self, path: impl AsPath, ) -> Option<BroadcastConsumer>

Block until a broadcast with the given path is announced and return it.

Returns None if the path is outside this consumer’s allowed prefixes or if the consumer is closed before the broadcast is announced. The returned broadcast may itself be closed later — subscribers should watch BroadcastConsumer::closed to react to that.

Prefer this over Self::get_broadcast when you know the exact path you want but cannot guarantee the announcement has already been received.

Source

pub fn scope(&self, prefixes: &[Path<'_>]) -> Option<OriginConsumer>

Returns a new OriginConsumer restricted to broadcasts under one of prefixes.

Returns None if there are no legal prefixes (the requested prefixes are disjoint from this consumer’s current scope, so it would always return None).

Source

pub fn with_root(&self, prefix: impl AsPath) -> Option<Self>

Returns a new OriginConsumer that automatically strips out the provided prefix.

Returns None if the provided root is not authorized; when Self::scope was already used without a wildcard.

Source

pub fn root(&self) -> &Path<'_>

Returns the prefix that is automatically stripped from all paths.

Source

pub fn allowed(&self) -> impl Iterator<Item = &Path<'_>>

Iterate over the path prefixes this handle is permitted to publish or subscribe under.

Source

pub fn absolute(&self, path: impl AsPath) -> Path<'_>

Converts a relative path to an absolute path.

Trait Implementations§

Source§

impl Clone for OriginConsumer

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Deref for OriginConsumer

Source§

type Target = Origin

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Drop for OriginConsumer

Source§

fn drop(&mut self)

Executes the destructor for this type. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

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

Source§

impl<T> MaybeSync for T
where T: Sync,