Skip to main content

OcmState

Struct OcmState 

Source
pub struct OcmState {
    pub fill_tracker: FillTracker,
    pub terminal_orders: AHashSet<BetId>,
    pub replaced_venue_order_ids: AHashSet<BetId>,
    /* private fields */
}
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<>>.

Terminal retention owns order correlation, per-Bet fill and reduction state, and replacement history. The first REST, OCM, or reconciliation observation with active quantity at least the requested quantity and below the original confirms a pending reduction; later observations are no-ops.

Fields§

§fill_tracker: FillTracker

Tracks cumulative per-bet fill and void state for deduplication and reconciliation.

§terminal_orders: AHashSet<BetId>

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

§replaced_venue_order_ids: AHashSet<BetId>

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

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.

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 mark_terminal_order(&mut self, bet_id: String)

Records an external terminal bet and bounds its stream and REST dedup state.

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 Clone for OcmState

Source§

fn clone(&self) -> OcmState

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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, <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