Skip to main content

OriginProducer

Struct OriginProducer 

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

Announces broadcasts to consumers over the network.

Implementations§

Source§

impl OriginProducer

Source

pub fn new(info: Origin) -> Self

Build a producer for the given origin id with no scoped prefix and no pre-existing broadcasts. Prefer Origin::produce.

Source

pub fn create_broadcast(&self, path: impl AsPath) -> Option<BroadcastProducer>

Create and publish a new broadcast, returning the producer.

This is a helper method when you only want to publish a broadcast to a single origin. Returns None if the broadcast is not allowed to be published.

Source

pub fn publish_broadcast( &self, path: impl AsPath, broadcast: BroadcastConsumer, ) -> bool

Publish a broadcast, announcing it to all consumers.

The broadcast will be unannounced when it is closed. If there is already a broadcast with the same path, the new one replaces the active only if its hop path is shorter or equal; otherwise it is queued as a backup. When the active broadcast closes, the backup with the shortest hop path is promoted and reannounced. Backups that close before being promoted are silently dropped.

Returns false if the broadcast is not allowed to be published.

Source

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

Returns a new OriginProducer restricted to publishing under one of prefixes.

Returns None if there are no legal prefixes (the requested prefixes are disjoint from this producer’s current scope).

Source

pub fn consume(&self) -> OriginConsumer

Subscribe to all announced broadcasts.

Source

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

👎Deprecated:

use consume().get_broadcast(path) once consume() is cheap

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

Equivalent to self.consume().get_broadcast(path) but skips the announcement-cursor allocation, which is currently relatively expensive.

Source

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

Returns a new OriginProducer 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 root 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 OriginProducer

Source§

fn clone(&self) -> OriginProducer

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 OriginProducer

Source§

type Target = Origin

The resulting type after dereferencing.
Source§

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

Dereferences the value.

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,