Skip to main content

MemorySubscriber

Struct MemorySubscriber 

Source
pub struct MemorySubscriber<Log = Discarding> { /* private fields */ }
Expand description

Subscriber returned by MemoryBroker::subscribe. Yields one MemoryMessage per delivery; consumers must call ack or nack on each.

Also consumable in batches through the BatchSubscriber capability, which caps each batch at the size it is asked for and allocates it at that size up front. A subscription of a Retaining broker is repositionable over its publish log through the Seekable capability: mint a MemorySeeker with seeker before opening the stream.

Trait Implementations§

Source§

impl<Log: LogMode> BatchSubscriber for MemorySubscriber<Log>

Greedy batching: a batch is the first awaited delivery plus everything already buffered, up to the size the registration asked for. Partial batches ship immediately, so no deadline timer is needed - the in-memory transport has nothing to wait for. Each batch is allocated at the requested size up front, so a partial batch holds the room of a full one.

Source§

type Batch = Vec<MemoryMessage<Log>>

Container yielded by batches. Implementations choose between Vec, custom iterators, or anything else that yields the underlying Subscriber::Message.
Source§

fn batches( &mut self, size: NonZeroUsize, ) -> impl Stream<Item = Result<Self::Batch, <Self as Subscriber>::Error>> + Send + '_

Returns a stream of batches of at most size messages. Read more
Source§

impl<Log> Debug for MemorySubscriber<Log>

Source§

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

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

impl<Log> Drop for MemorySubscriber<Log>

Available on crate feature testing only.
Source§

fn drop(&mut self)

What is still queued leaves with the subscription, so the harness stops counting it in flight. A delivery handed back unsettled while the service tears down (a fail-fast panic) lands here, and the reaction the test waits on is over once the subscription is gone.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Seekable for MemorySubscriber<Retaining>

Seeking is native on a retaining broker: it keeps a bounded publish log per name, so a subscription can re-enqueue any retained suffix of it. A discarding broker keeps no log, and its subscriptions carry no seek surface at all.

Source§

type Seeker = MemorySeeker

The handle usable while this subscriber’s stream is running.
Source§

fn seeker(&self) -> MemorySeeker

Mints a handle for repositioning this subscription.
Source§

impl<Log: LogMode> Subscriber for MemorySubscriber<Log>

Source§

type Message = MemoryMessage<Log>

The message type yielded by this subscriber.
Source§

type Error = !

The error type yielded by the stream when delivery fails.
Source§

fn stream( &mut self, ) -> impl Stream<Item = Result<Self::Message, Self::Error>> + Send + '_

Returns a stream of broker deliveries. Read more

Auto Trait Implementations§

§

impl<Log = Discarding> !RefUnwindSafe for MemorySubscriber<Log>

§

impl<Log = Discarding> !UnwindSafe for MemorySubscriber<Log>

§

impl<Log> Freeze for MemorySubscriber<Log>
where PhantomData<Log>: Freeze,

§

impl<Log> Send for MemorySubscriber<Log>
where PhantomData<Log>: Send,

§

impl<Log> Sync for MemorySubscriber<Log>
where PhantomData<Log>: Sync,

§

impl<Log> Unpin for MemorySubscriber<Log>
where PhantomData<Log>: Unpin,

§

impl<Log> UnsafeUnpin for MemorySubscriber<Log>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self> ⓘ

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PublishedThrough<DefaultSlot> for T

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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