Documentation
¶
Index ¶
- type ClientEngine
- func (e *ClientEngine[Order, Report, Adjustment]) ApplyAccountAdjustment(accountID param.AccountID, adjustments []Adjustment) (optional.Option[reject.AccountAdjustmentBatchError], error)
- func (e *ClientEngine[Order, Report, Adjustment]) ApplyExecutionReport(report Report) (PostTradeResult, error)
- func (e *ClientEngine[Order, Report, Adjustment]) ExecutePreTrade(order Order) (*pretrade.Reservation, []reject.Reject, error)
- func (e *ClientEngine[Order, Report, Adjustment]) StartPreTrade(order Order) (*ClientRequest, []reject.Reject, error)
- func (e *ClientEngine[Order, Report, Adjustment]) Stop()
- type ClientEngineBuilder
- func NewClientAccountAdjustmentEngineBuilder[Adjustment accountadjustment.ClientAccountAdjustment](options ...ClientEngineOption) (*ClientEngineBuilder[model.Order, model.ExecutionReport, Adjustment], error)
- func NewClientEngineBuilder[Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport, ...](options ...ClientEngineOption) (*ClientEngineBuilder[Order, Report, Adjustment], error)
- func NewClientPreTradeEngineBuilder[Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport](options ...ClientEngineOption) (*ClientEngineBuilder[Order, Report, model.AccountAdjustment], error)
- func (b *ClientEngineBuilder[Order, Report, Adjustment]) AccountAdjustmentPolicy(policy ...accountadjustment.ClientPolicy[Adjustment]) *ClientEngineBuilder[Order, Report, Adjustment]
- func (b *ClientEngineBuilder[Order, Report, Adjustment]) Build() (*ClientEngine[Order, Report, Adjustment], error)
- func (b *ClientEngineBuilder[Order, Report, Adjustment]) CheckPreTradeStartPolicy(policy ...pretrade.ClientCheckPreTradeStartPolicy[Order, Report]) *ClientEngineBuilder[Order, Report, Adjustment]
- func (b *ClientEngineBuilder[Order, Report, Adjustment]) Close()
- func (b *ClientEngineBuilder[Order, Report, Adjustment]) PreTradePolicy(policy ...pretrade.ClientPreTradePolicy[Order, Report]) *ClientEngineBuilder[Order, Report, Adjustment]
- type ClientEngineOption
- type ClientRequest
- type Engine
- func (e *Engine) ApplyAccountAdjustment(accountID param.AccountID, adjustments []model.AccountAdjustment) (optional.Option[reject.AccountAdjustmentBatchError], error)
- func (e *Engine) ApplyExecutionReport(report model.ExecutionReport) (PostTradeResult, error)
- func (e *Engine) ExecutePreTrade(order model.Order) (*pretrade.Reservation, []reject.Reject, error)
- func (e *Engine) StartPreTrade(order model.Order) (*pretrade.Request, []reject.Reject, error)
- func (e *Engine) Stop()
- type EngineBuilder
- func (b *EngineBuilder) AccountAdjustmentPolicy(policy ...accountadjustment.Policy) *EngineBuilder
- func (b *EngineBuilder) Build() (*Engine, error)
- func (b *EngineBuilder) BuiltinCheckPreTradeStartPolicy(policy ...pretrade.BuiltinPolicy) *EngineBuilder
- func (b *EngineBuilder) CheckPreTradeStartPolicy(policy ...pretrade.CheckStartPolicy) *EngineBuilder
- func (b *EngineBuilder) Close()
- func (b *EngineBuilder) PreTradePolicy(policy ...pretrade.Policy) *EngineBuilder
- type PostTradeResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientEngine ¶
type ClientEngine[ Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport, Adjustment accountadjustment.ClientAccountAdjustment, ] struct { // contains filtered or unexported fields }
ClientEngine runs the standard engine through client-owned order, execution report, and account-adjustment types.
The ordinary Engine API remains the zero-payload fast path. ClientEngine is the opt-in path that allocates a cgo.Handle per submitted client payload so callbacks can receive the original typed value.
Threading: ClientEngine follows the same threading contract as Engine. Payload handles allocated by the SDK (cgo.Handle wrapped around the client value) are released synchronously inside the same call that created them, so callers do not need to extend payload lifetime beyond that call.
func (*ClientEngine[Order, Report, Adjustment]) ApplyAccountAdjustment ¶
func (e *ClientEngine[Order, Report, Adjustment]) ApplyAccountAdjustment( accountID param.AccountID, adjustments []Adjustment, ) (optional.Option[reject.AccountAdjustmentBatchError], error)
ApplyAccountAdjustment applies client account-adjustment payloads.
Payload handles are released before ApplyAccountAdjustment returns because account-adjustment callbacks are synchronous.
func (*ClientEngine[Order, Report, Adjustment]) ApplyExecutionReport ¶
func (e *ClientEngine[Order, Report, Adjustment]) ApplyExecutionReport( report Report, ) (PostTradeResult, error)
ApplyExecutionReport applies a client execution report payload.
The payload handle is released before ApplyExecutionReport returns because report callbacks are synchronous.
func (*ClientEngine[Order, Report, Adjustment]) ExecutePreTrade ¶
func (e *ClientEngine[Order, Report, Adjustment]) ExecutePreTrade( order Order, ) (*pretrade.Reservation, []reject.Reject, error)
ExecutePreTrade runs the full pre-trade pipeline with a client order payload.
The payload handle is released before ExecutePreTrade returns because all order callbacks have completed by then.
func (*ClientEngine[Order, Report, Adjustment]) StartPreTrade ¶
func (e *ClientEngine[Order, Report, Adjustment]) StartPreTrade( order Order, ) (*ClientRequest, []reject.Reject, error)
StartPreTrade runs the start stage with a client order payload.
On accept, the returned ClientRequest owns the payload handle and releases it when Execute or Close is called. On reject or error, the handle is released before StartPreTrade returns.
func (*ClientEngine[Order, Report, Adjustment]) Stop ¶
func (e *ClientEngine[Order, Report, Adjustment]) Stop()
Stop releases the underlying engine.
type ClientEngineBuilder ¶
type ClientEngineBuilder[ Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport, Adjustment accountadjustment.ClientAccountAdjustment, ] struct { // contains filtered or unexported fields }
func NewClientAccountAdjustmentEngineBuilder ¶
func NewClientAccountAdjustmentEngineBuilder[ Adjustment accountadjustment.ClientAccountAdjustment, ](options ...ClientEngineOption) ( *ClientEngineBuilder[model.Order, model.ExecutionReport, Adjustment], error, )
NewClientAccountAdjustmentEngineBuilder creates a client builder for custom account-adjustment types while keeping orders and execution reports on the standard SDK model types.
func NewClientEngineBuilder ¶
func NewClientEngineBuilder[ Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport, Adjustment accountadjustment.ClientAccountAdjustment, ](options ...ClientEngineOption) (*ClientEngineBuilder[Order, Report, Adjustment], error)
NewClientEngineBuilder creates a builder for strategies that use custom order, execution report, and account-adjustment types.
Policies added to this builder receive client types directly. The builder adapts them to the standard engine policies and keeps payload handles entirely inside the SDK boundary.
func NewClientPreTradeEngineBuilder ¶
func NewClientPreTradeEngineBuilder[ Order pretrade.ClientOrder, Report pretrade.ClientExecutionReport, ]( options ...ClientEngineOption, ) (*ClientEngineBuilder[Order, Report, model.AccountAdjustment], error)
NewClientPreTradeEngineBuilder creates a client builder for custom order and execution report types while keeping account adjustments on the standard SDK model type.
func (*ClientEngineBuilder[Order, Report, Adjustment]) AccountAdjustmentPolicy ¶
func (b *ClientEngineBuilder[Order, Report, Adjustment]) AccountAdjustmentPolicy( policy ...accountadjustment.ClientPolicy[Adjustment], ) *ClientEngineBuilder[Order, Report, Adjustment]
AccountAdjustmentPolicy adds client typed account-adjustment policies.
func (*ClientEngineBuilder[Order, Report, Adjustment]) Build ¶
func (b *ClientEngineBuilder[Order, Report, Adjustment]) Build() ( *ClientEngine[Order, Report, Adjustment], error, )
Build constructs a ClientEngine and transfers ownership of policies to it.
func (*ClientEngineBuilder[Order, Report, Adjustment]) CheckPreTradeStartPolicy ¶
func (b *ClientEngineBuilder[Order, Report, Adjustment]) CheckPreTradeStartPolicy( policy ...pretrade.ClientCheckPreTradeStartPolicy[Order, Report], ) *ClientEngineBuilder[Order, Report, Adjustment]
CheckPreTradeStartPolicy adds client typed start policies.
func (*ClientEngineBuilder[Order, Report, Adjustment]) Close ¶
func (b *ClientEngineBuilder[Order, Report, Adjustment]) Close()
Close releases the underlying builder and any policies it still owns.
func (*ClientEngineBuilder[Order, Report, Adjustment]) PreTradePolicy ¶
func (b *ClientEngineBuilder[Order, Report, Adjustment]) PreTradePolicy( policy ...pretrade.ClientPreTradePolicy[Order, Report], ) *ClientEngineBuilder[Order, Report, Adjustment]
PreTradePolicy adds client typed main pre-trade policies.
type ClientEngineOption ¶
type ClientEngineOption func(*clientEngineOptions)
func UnsafeFastClientPayloadCallbacks ¶
func UnsafeFastClientPayloadCallbacks() ClientEngineOption
UnsafeFastClientPayloadCallbacks selects callback adapters that trust every client payload reaching client policies to carry the builder's declared type.
This mode removes safe adapter checks from every callback. A missing payload or a wrong payload type panics.
type ClientRequest ¶
type ClientRequest struct {
// contains filtered or unexported fields
}
ClientRequest is a deferred pre-trade request that keeps the original client order payload alive until the request is executed or closed.
func (*ClientRequest) Close ¶
func (r *ClientRequest) Close()
Close releases the request and the client order payload.
func (*ClientRequest) Execute ¶
func (r *ClientRequest) Execute() (*pretrade.Reservation, []reject.Reject, error)
Execute runs the deferred pre-trade request and releases the client order payload after callbacks complete.
Execute does not close the underlying request; call Close after Execute just as with a standard pretrade.Request.
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
func (*Engine) ApplyAccountAdjustment ¶
func (e *Engine) ApplyAccountAdjustment( accountID param.AccountID, adjustments []model.AccountAdjustment, ) (optional.Option[reject.AccountAdjustmentBatchError], error)
func (*Engine) ApplyExecutionReport ¶
func (e *Engine) ApplyExecutionReport(report model.ExecutionReport) (PostTradeResult, error)
func (*Engine) ExecutePreTrade ¶
ExecutePreTrade runs the full pre-trade pipeline and, on accept, returns a reservation representing the reserved but not yet finalized state.
Return contract:
- on accept, returns a non-nil *pretrade.Reservation; the caller takes ownership and must resolve it exactly once via CommitAndClose, RollbackAndClose, or Close (which rolls back any pending mutations implicitly);
- on reject, returns a non-nil []reject.Reject; no Reservation is produced;
- on transport error, returns a Go error; no Reservation is produced.
func (*Engine) StartPreTrade ¶
StartPreTrade runs the start stage of the pre-trade pipeline.
Return contract:
- on accept, returns a non-nil *pretrade.Request; the caller takes ownership and must release it with Request.Close when done (Execute does not close the request — see Request.Execute);
- on reject, returns a non-nil []reject.Reject; no Request is produced;
- on transport error, returns a Go error; no Request is produced.
func (*Engine) Stop ¶
func (e *Engine) Stop()
Stop signals the engine to halt internal evaluation, releases policies registered on the engine, and frees the underlying native resources.
After Stop returns, the engine handle is no longer valid for any operation. The engine must no longer be passed to any other method (StartPreTrade, ExecutePreTrade, ApplyExecutionReport, ApplyAccountAdjustment); doing so is undefined behavior.
Idempotency: safe to call more than once; subsequent calls are no-ops.
Outstanding objects previously produced by this engine (pretrade.Request, pretrade.Reservation) remain owned by the caller and must be released independently.
type EngineBuilder ¶
type EngineBuilder struct {
// contains filtered or unexported fields
}
func NewEngineBuilder ¶
func NewEngineBuilder() (*EngineBuilder, error)
NewEngineBuilder returns a new engine builder. The returned builder must be released by calling either Close or Build after use.
func (*EngineBuilder) AccountAdjustmentPolicy ¶
func (b *EngineBuilder) AccountAdjustmentPolicy(policy ...accountadjustment.Policy) *EngineBuilder
func (*EngineBuilder) Build ¶
func (b *EngineBuilder) Build() (*Engine, error)
Build constructs the engine and releases the builder. The builder is closed on both success and failure, so an explicit Close afterwards is a no-op. On failure, any policies that were accepted by the builder but not transferred to the engine are closed by the builder. On success, ownership of the returned engine passes to the caller, who must release it by calling Stop. Behavior is undefined if Build is called more than once on the same builder.
func (*EngineBuilder) BuiltinCheckPreTradeStartPolicy ¶
func (b *EngineBuilder) BuiltinCheckPreTradeStartPolicy( policy ...pretrade.BuiltinPolicy, ) *EngineBuilder
func (*EngineBuilder) CheckPreTradeStartPolicy ¶
func (b *EngineBuilder) CheckPreTradeStartPolicy( policy ...pretrade.CheckStartPolicy, ) *EngineBuilder
func (*EngineBuilder) Close ¶
func (b *EngineBuilder) Close()
Close releases the builder and any policies that were handed to it but never transferred to the engine. Safe to call more than once and safe to call after Build; subsequent calls are no-ops.
func (*EngineBuilder) PreTradePolicy ¶
func (b *EngineBuilder) PreTradePolicy(policy ...pretrade.Policy) *EngineBuilder
type PostTradeResult ¶
type PostTradeResult struct {
KillSwitchTriggered bool
}