Skip to main content

RpcServerStreamingFold

Struct RpcServerStreamingFold 

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

Server-side fold for streaming RPC. Parallel to RpcServerFold but multi-fire emit: each handler invocation may produce many RESPONSE events for the same call_id, marked non-terminal/terminal via the nrpc-streaming header.

State () — like the unary fold, the handler owns user state via captured Arc<Mutex<S>>. The fold’s own state (in-flight cancellation tokens) lives on &mut self.

Implementations§

Source§

impl RpcServerStreamingFold

Source

pub fn new( handler: Arc<dyn RpcStreamingHandler>, emit: RpcAsyncResponseEmitter, ) -> Self

Construct a streaming server fold. emit publishes individual chunks (and the terminal frame) on the caller’s reply channel.

Uses the async emitter variant so the pump task can serialize per-call publishes — without that ordering guarantee, two chunks emitted in succession can race into the publish path and arrive at the caller out of order (or be eclipsed by the terminal frame and lost entirely).

Source

pub fn with_metrics(self, metrics: Arc<ServiceMetricsAtomic>) -> Self

Attach a per-service metrics handle. Hooks the spawned handler task to bump handler_invocations_total / handler_in_flight / handler_panics_total / handler_duration_*, and the pump task to bump streaming_chunks_emitted_total per emitted chunk.

Trait Implementations§

Source§

impl RedexFold<()> for RpcServerStreamingFold

Source§

fn apply(&mut self, ev: &RedexEvent, _state: &mut ()) -> Result<(), RedexError>

Apply one event to state. Return an error to stop the fold.

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> 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<T> Same for T

Source§

type Output = T

Should always be Self
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<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