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 register_client(&mut self, client: Rc<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: Rc<dyn ExecutionClient>)

Registers a default execution client for fallback routing.

Source

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

Returns the execution client registered with the given ID.

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

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