Skip to main content

OcmState

Struct OcmState 

Source
pub struct OcmState {
    pub fill_tracker: FillTracker,
    pub customer_order_refs: AHashMap<String, ClientOrderId>,
    pub order_strategies: AHashMap<ClientOrderId, StrategyId>,
    pub accepted_orders: AHashSet<ClientOrderId>,
    pub stream_reported_client_orders: AHashSet<ClientOrderId>,
    pub terminal_orders: AHashSet<String>,
    pub replaced_venue_order_ids: AHashSet<String>,
    pub pending_update_keys: AHashSet<(ClientOrderId, String)>,
}
Expand description

Shared mutable state for the OCM stream handler.

Accessed by both the TCP reader closure and the execution client methods (submit, modify, connect/disconnect). All access goes through Arc<Mutex<>>.

Fields§

§fill_tracker: FillTracker§customer_order_refs: AHashMap<String, ClientOrderId>

Maps customer_order_ref (rfo) to ClientOrderId for stream resolution.

§order_strategies: AHashMap<ClientOrderId, StrategyId>

Maps client_order_id to submitting strategy. Captured at submit so the stream task builds direct events for tracked orders without cache access.

§accepted_orders: AHashSet<ClientOrderId>

Client order IDs that already had an OrderAccepted emitted (via the HTTP place response or stream synthesis), so acceptance is applied exactly once.

§stream_reported_client_orders: AHashSet<ClientOrderId>

Client order IDs that already received an OCM order status update.

§terminal_orders: AHashSet<String>

Bet IDs that have received a terminal event (cancel, lapse, fill-complete).

§replaced_venue_order_ids: AHashSet<String>

Old bet IDs from replace operations, to suppress late stream updates.

§pending_update_keys: AHashSet<(ClientOrderId, String)>

(client_order_id, old_bet_id) pairs for in-flight replace operations.

Implementations§

Source§

impl OcmState

Source

pub fn register_customer_order_ref(&mut self, client_order_id: ClientOrderId)

Registers a customer_order_ref mapping for a new order.

Source

pub fn register_customer_order_ref_with_legacy( &mut self, client_order_id: ClientOrderId, )

Registers both current and legacy customer_order_ref truncations.

Used during reconnect sync for pre-existing orders that may have been placed with either truncation format.

Source

pub fn register_order_identity( &mut self, client_order_id: ClientOrderId, strategy_id: StrategyId, )

Records the submitting strategy for a tracked order.

Source

pub fn order_strategy_id( &self, client_order_id: &ClientOrderId, ) -> Option<StrategyId>

Returns the submitting strategy for a tracked order, if known.

Source

pub fn mark_accepted(&mut self, client_order_id: ClientOrderId) -> bool

Records that acceptance has been emitted for a tracked order.

Returns true when this call newly marks the order accepted (the caller should emit OrderAccepted), or false when acceptance was already emitted.

Source

pub fn remove_customer_order_refs(&mut self, client_order_id: &ClientOrderId)

Removes customer_order_ref mappings for a client_order_id.

Source

pub fn resolve_client_order_id( &self, rfo: Option<&str>, ) -> Option<ClientOrderId>

Resolves a client_order_id from the unmatched order’s rfo field.

Source

pub fn should_suppress_cancel( &self, client_order_id: &ClientOrderId, bet_id: &str, ) -> bool

Returns true if a cancel/lapse for this bet should be suppressed because a replace operation is pending or the bet was already replaced.

Source

pub fn cleanup_terminal_order(&mut self, client_order_id: &ClientOrderId)

Cleans up customer_order_ref mappings for a terminal order, unless a pending replace exists for this client_order_id.

Source

pub fn sync_from_orders(&mut self, orders: &[OrderSyncEntry])

Anchors the fill tracker against cached orders so the post-reconnect image neither treats cumulative size as a new fill nor re-emits a fill that was published via another channel.

Trait Implementations§

Source§

impl Debug for OcmState

Source§

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

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

impl Default for OcmState

Source§

fn default() -> OcmState

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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
§

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

§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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
§

impl<T> PolicyExt for T
where T: ?Sized,

§

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
§

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
§

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

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.
§

impl<T> Ungil for T
where T: Send,

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more