Skip to main content

WsDispatcher

Struct WsDispatcher 

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

Producer handle held by exchange WS implementations. Owns the sender halves of both channels so the implementation can emit updates and session events directly.

The receiver halves are held in Mutex<Option<...>> and handed out exactly once via take_updates() / take_session_events(). This enforces the take-once contract on the consumer side.

Implementations§

Source§

impl WsDispatcher

Source

pub fn new(config: WsDispatcherConfig) -> Self

Create a new dispatcher. The returned dispatcher owns the send halves of both channels and the (one-shot) receive halves; consumers fetch streams exactly once via take_updates() / take_session_events().

Source

pub fn take_updates(&self) -> Option<UpdateStream>

Take ownership of the consumer-side update stream. Returns None if already taken — the receiver is single-consumer by contract; cloning would silently split messages between holders.

Source

pub fn take_session_events(&self) -> Option<SessionStream>

Take ownership of the consumer-side session stream.

Source

pub fn try_send_update(&self, update: WsUpdate) -> bool

Emit an update. Returns true if delivered. On Err(TrySendError::Full) the update is dropped and the caller is expected to follow up with a SessionEvent::Lagged + one or more BookInvalidated events — this is the correctness contract that distinguishes 0.2 from 0.1’s silent-skip broadcast behavior.

Source

pub async fn send_session(&self, event: SessionEvent)

Emit a session event. Unlike updates, these are always delivered via send; the session-event channel is sized generously and losing an event (e.g. a missed Reconnected) is worse than a brief await.

Source

pub fn is_updates_full(&self) -> bool

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, 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