Skip to main content

OcmState

Struct OcmState 

Source
pub struct OcmState {
    pub fill_tracker: FillTracker,
    pub customer_order_refs: AHashMap<String, 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.

§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 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 try_mark_terminal(&mut self, bet_id: &str) -> bool

Returns true if the bet_id already has a terminal event and should be skipped. Otherwise marks it as terminal and returns false.

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: &[(String, ClientOrderId, Decimal, Decimal, bool)], )

Syncs fill tracker state from existing order fills.

Pre-populates filled quantities and average prices so that the first stream update after reconnect computes correct incremental fills instead of treating cumulative size as new.

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§

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.

§

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

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

§

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