ExecutionEngine

Struct ExecutionEngine 

Source
pub struct ExecutionEngine { /* private fields */ }
Expand description

Central execution engine responsible for orchestrating order routing and execution.

The execution engine manages the entire order lifecycle from submission to completion, handling routing to appropriate execution clients, position management, and event processing. It supports multiple execution venues through registered clients and provides sophisticated order management capabilities.

Implementations§

Source§

impl ExecutionEngine

Source

pub fn new( clock: Rc<RefCell<dyn Clock>>, cache: Rc<RefCell<Cache>>, config: Option<ExecutionEngineConfig>, ) -> Self

Creates a new ExecutionEngine instance.

Source

pub fn position_id_count(&self, strategy_id: StrategyId) -> usize

Returns the position ID count for the specified strategy.

Source

pub fn check_integrity(&self) -> bool

Checks the integrity of cached execution data.

Source

pub fn check_connected(&self) -> bool

Returns true if all registered execution clients are connected.

Source

pub fn check_disconnected(&self) -> bool

Returns true if all registered execution clients are disconnected.

Source

pub fn check_residuals(&self) -> bool

Checks for residual positions and orders in the cache.

Source

pub fn get_external_order_claims_instruments(&self) -> HashSet<InstrumentId>

Returns the set of instruments that have external order claims.

Source

pub fn get_external_client_ids(&self) -> HashSet<ClientId>

Returns the configured external client IDs.

Source

pub fn get_external_order_claim( &self, instrument_id: &InstrumentId, ) -> Option<StrategyId>

Returns any external order claim for the given instrument ID.

Source

pub fn register_client( &mut self, client: Box<dyn ExecutionClient>, ) -> Result<()>

Registers a new execution client.

§Errors

Returns an error if a client with the same ID is already registered.

Source

pub fn register_default_client(&mut self, client: Box<dyn ExecutionClient>)

Registers a default execution client for fallback routing.

Source

pub fn get_client(&self, client_id: &ClientId) -> Option<&dyn ExecutionClient>

Returns a reference to the execution client registered with the given ID.

Source

pub fn get_clients_mut(&mut self) -> Vec<&mut ExecutionClientAdapter>

Returns mutable access to all registered execution clients.

Source

pub fn get_clients_for_orders( &self, orders: &[OrderAny], ) -> Vec<&dyn ExecutionClient>

Returns execution clients that would handle the given orders.

This method first attempts to resolve each order’s originating client from the cache, then falls back to venue routing for any orders without a cached client.

Source

pub fn register_venue_routing( &mut self, client_id: ClientId, venue: Venue, ) -> Result<()>

Sets routing for a specific venue to a given client ID.

§Errors

Returns an error if the client ID is not registered.

Source

pub fn register_oms_type(&mut self, strategy_id: StrategyId, oms_type: OmsType)

Registers the OMS (Order Management System) type for a strategy.

If an OMS type is already registered for this strategy, it will be overridden.

Source

pub fn register_external_order_claims( &mut self, strategy_id: StrategyId, instrument_ids: HashSet<InstrumentId>, ) -> Result<()>

Registers external order claims for a strategy.

This operation is atomic: either all instruments are registered or none are.

§Errors

Returns an error if any instrument already has a registered claim.

Source

pub fn deregister_client(&mut self, client_id: ClientId) -> Result<()>

§Errors

Returns an error if no client is registered with the given ID.

Source

pub async fn connect(&mut self) -> Result<()>

Connects all registered execution clients concurrently.

§Errors

Returns an error if any client fails to connect.

Source

pub async fn disconnect(&mut self) -> Result<()>

Disconnects all registered execution clients concurrently.

§Errors

Returns an error if any client fails to disconnect.

Source

pub fn set_manage_own_order_books(&mut self, value: bool)

Sets the manage_own_order_books configuration option.

Source

pub fn set_convert_quote_qty_to_base(&mut self, value: bool)

Sets the convert_quote_qty_to_base configuration option.

Source

pub fn start_snapshot_timer(&mut self)

Starts the position snapshot timer if configured.

Timer functionality requires a live execution context with an active clock.

Source

pub fn stop_snapshot_timer(&mut self)

Stops the position snapshot timer if running.

Source

pub fn snapshot_open_position_states(&self)

Creates snapshots of all open positions.

Source

pub async fn load_cache(&mut self) -> Result<()>

Loads persistent state into cache and rebuilds indices.

§Errors

Returns an error if any cache operation fails.

Source

pub fn flush_db(&self)

Flushes the database to persist all cached data.

Source

pub fn process(&mut self, event: &OrderEventAny)

Processes an order event, updating internal state and routing as needed.

Source

pub fn execute(&self, command: &TradingCommand)

Executes a trading command by routing it to the appropriate execution client.

Trait Implementations§

Source§

impl Debug for ExecutionEngine

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

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
§

impl<T, U> Into<U> for T
where U: From<T>,

§

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

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