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
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 register_order_identity(
&mut self,
client_order_id: ClientOrderId,
strategy_id: StrategyId,
)
pub fn register_order_identity( &mut self, client_order_id: ClientOrderId, strategy_id: StrategyId, )
Records the submitting strategy for a tracked order.
Sourcepub fn order_strategy_id(
&self,
client_order_id: &ClientOrderId,
) -> Option<StrategyId>
pub fn order_strategy_id( &self, client_order_id: &ClientOrderId, ) -> Option<StrategyId>
Returns the submitting strategy for a tracked order, if known.
Sourcepub fn mark_accepted(&mut self, client_order_id: ClientOrderId) -> bool
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.
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 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: &[OrderSyncEntry])
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§
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§
impl<T> Allocation for T
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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