OpenPit C++ SDK
C++17 SDK for the OpenPit pre-trade risk engine
openpit::Engine Class Reference

Public Member Functions

::openpit::accounts::Accounts Accounts () const noexcept
 
template<typename Adjustment >
AdjustmentResult ApplyAccountAdjustment (::openpit::param::AccountId accountId, const std::vector< Adjustment > &adjustments) const
 
::openpit::pretrade::DropCopyResult ApplyDropCopy (const ::openpit::Order &order) const
 Applies an already executed order without enforcing existing account and account-group blocks or ordinary policy rejects. More...
 
PostTradeResult ApplyExecutionReport (const ::openpit::ExecutionReport &report) const
 
::openpit::Configurator Configure () const noexcept
 
 Engine ()=default
 
::openpit::pretrade::ExecuteResult ExecutePreTrade (const ::openpit::Order &order) const
 
::openpit::pretrade::DryRunReport ExecutePreTradeDryRun (const ::openpit::Order &order) const
 
 operator bool () const noexcept
 
template<typename OrderT , std::enable_if_t< std::is_base_of_v<::openpit::Order, std::decay_t< OrderT >>, int > = 0>
::openpit::pretrade::StartResult StartPreTrade (OrderT &&order) const
 
::openpit::pretrade::StartResult StartPreTrade (std::unique_ptr< const ::openpit::Order > order) const
 
::openpit::pretrade::DryRunReport StartPreTradeDryRun (const ::openpit::Order &order) const
 

Constructor & Destructor Documentation

◆ Engine()

openpit::Engine::Engine ( )
default

Member Function Documentation

◆ Accounts()

::openpit::accounts::Accounts openpit::Engine::Accounts ( ) const
inlinenoexcept

◆ ApplyAccountAdjustment()

template<typename Adjustment >
AdjustmentResult openpit::Engine::ApplyAccountAdjustment ( ::openpit::param::AccountId  accountId,
const std::vector< Adjustment > &  adjustments 
) const
inline

◆ ApplyDropCopy()

::openpit::pretrade::DropCopyResult openpit::Engine::ApplyDropCopy ( const ::openpit::Order order) const
inline

Applies an already executed order without enforcing existing account and account-group blocks or ordinary policy rejects.

On accept the result carries a pretrade::DropCopyOperation representing applied-but-not- finalized state; a fatal evaluation failure carries the rejects instead. Throws openpit::Error on a boundary failure.

The returned operation owns finalization exactly like a reservation: commit applies the prepared state, rollback compensates it, and destruction rolls back an unresolved operation. Account-control operations and rate-limit attempts are applied before this call returns and stay outside that finalization boundary.

Drop copy requires a readable account id: an order whose account id cannot be read is rejected with RejectCode::MissingRequiredField before any policy runs, so no policy observes it and no state is touched.

A fully synchronized engine accepts concurrent calls for the same account, but individual storage accesses may interleave. Callers that require whole-pipeline isolation must serialize those calls externally.

◆ ApplyExecutionReport()

PostTradeResult openpit::Engine::ApplyExecutionReport ( const ::openpit::ExecutionReport report) const
inline

◆ Configure()

openpit::Configurator openpit::Engine::Configure ( ) const
inlinenoexcept

◆ ExecutePreTrade()

::openpit::pretrade::ExecuteResult openpit::Engine::ExecutePreTrade ( const ::openpit::Order order) const
inline

◆ ExecutePreTradeDryRun()

::openpit::pretrade::DryRunReport openpit::Engine::ExecutePreTradeDryRun ( const ::openpit::Order order) const
inline

◆ operator bool()

openpit::Engine::operator bool ( ) const
inlineexplicitnoexcept

◆ StartPreTrade() [1/2]

template<typename OrderT , std::enable_if_t< std::is_base_of_v<::openpit::Order, std::decay_t< OrderT >>, int > = 0>
::openpit::pretrade::StartResult openpit::Engine::StartPreTrade ( OrderT &&  order) const
inline

◆ StartPreTrade() [2/2]

::openpit::pretrade::StartResult openpit::Engine::StartPreTrade ( std::unique_ptr< const ::openpit::Order order) const
inline

◆ StartPreTradeDryRun()

::openpit::pretrade::DryRunReport openpit::Engine::StartPreTradeDryRun ( const ::openpit::Order order) const
inline