Skip to main content

RequestTracker

Struct RequestTracker 

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

Monotonically-increasing token minter + in-flight tracker.

Implementations§

Source§

impl RequestTracker

Source

pub fn new() -> Self

Construct fresh with token counter at 0.

Source

pub fn mint_token(&mut self) -> CommandId

Mint a fresh correlation token (used by CorrelateTag + wire::Send to identify the round trip).

Source

pub fn register_in_flight( &mut self, wire_req_id: u64, started_at_ns: u64, target_site: NodeSiteId, chain: Option<ChainContext>, ttl_ns: NonZeroU64, parked_op: Option<CommandId>, )

Record an outbound wire round-trip’s dispatch-time bookkeeping. wire_req_id is the token returned by Self::mint_token; reused on the response side to match. ttl_ns is the maximum age the entry will survive before the tracker considers it stale (typed as NonZeroU64 so callers cannot accidentally register an entry that never expires, which was the only failure mode the RequestTracker.in_flight map had as an unbounded resource). parked_op is the CommandId of the originator’s local op parked waiting for the chain response; None for entries registered outside an async-suspension context.

Source

pub fn observe_response( &mut self, wire_req_id: u64, now_ns: u64, ) -> Option<RoundTripSample>

Pop the in-flight entry for a landing response and surface the elapsed-time sample the RTT tracker should observe. Returns None when no matching in-flight entry exists (the response is unsolicited, duplicate, or fired before the tracker was populated).

Source

pub fn peek(&self, wire_req_id: u64) -> Option<&InFlightSend>

Read-only peek at an in-flight entry without consuming it.

Source

pub fn in_flight_count(&self) -> usize

Count of currently in-flight round trips.

Source

pub fn drain_stale(&mut self, now_ns: u64) -> Vec<(u64, InFlightSend)>

Drain in-flight entries whose per-entry expires_at_ns has passed (entries with expires_at_ns == 0 never expire on age). Returns the dropped entries so the engine can emit EngineStep::WireTimeout and fail any parked CommandId.

Trait Implementations§

Source§

impl Default for RequestTracker

Source§

fn default() -> RequestTracker

Returns the “default value” for a 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<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> ErasedComponent for T
where T: Any + Send + Sync,

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = 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