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
impl OcmState
Sourcepub fn register_customer_order_ref(&mut self, client_order_id: ClientOrderId)
pub fn register_customer_order_ref(&mut self, client_order_id: ClientOrderId)
Registers a customer_order_ref mapping for a new order.
Sourcepub fn register_customer_order_ref_with_legacy(
&mut self,
client_order_id: ClientOrderId,
)
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.
Sourcepub fn remove_customer_order_refs(&mut self, client_order_id: &ClientOrderId)
pub fn remove_customer_order_refs(&mut self, client_order_id: &ClientOrderId)
Removes customer_order_ref mappings for a client_order_id.
Sourcepub fn resolve_client_order_id(
&self,
rfo: Option<&str>,
) -> Option<ClientOrderId>
pub fn resolve_client_order_id( &self, rfo: Option<&str>, ) -> Option<ClientOrderId>
Resolves a client_order_id from the unmatched order’s rfo field.
Sourcepub fn try_mark_terminal(&mut self, bet_id: &str) -> bool
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.
Sourcepub fn should_suppress_cancel(
&self,
client_order_id: &ClientOrderId,
bet_id: &str,
) -> bool
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.
Sourcepub fn cleanup_terminal_order(&mut self, client_order_id: &ClientOrderId)
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.
Sourcepub fn sync_from_orders(
&mut self,
orders: &[(String, ClientOrderId, Decimal, Decimal, bool)],
)
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§
Auto Trait Implementations§
impl Freeze for OcmState
impl RefUnwindSafe for OcmState
impl Send for OcmState
impl Sync for OcmState
impl Unpin for OcmState
impl UnsafeUnpin for OcmState
impl UnwindSafe for OcmState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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