OnixS Eurex EDCI Handler C++ library 1.0.0
Users' manual and API documentation
Loading...
Searching...
No Matches
Events in the Handler

Messages and Events

Once the Handler is started, it listens to messages from the Eurex EDCI message flow, processes them and invokes client code for further processing.

The Handler processes messages asynchronously and uses the concept of events and event listeners to notify client code about a particular occasion such as the reception of a message.

Listening for a particular Event

For each event the Handler provides an interface (C++ class with virtual members). Client code must implement this interface to handle events of that type. The Handler exposes a registration member to associate a listener instance with a particular Handler instance.

Note
Associating a listener with an instance of OnixS::Eurex::DropCopy::Handler must be performed while the Handler is in the disconnected state. Once the Handler is started, changing listener associations is not allowed and may lead to unpredictable behavior.

Session Events

Session events cover the session lifecycle: logon, logout, heartbeats, and session-level notifications received immediately after logon. Implement OnixS::Eurex::DropCopy::SessionListener and register it via OnixS::Eurex::DropCopy::Handler::registerSessionListener.

EventListener methodDescription
LogonResponse receivedOnixS::Eurex::DropCopy::SessionListener::onLogonResponseFired when the exchange accepts the session logon. Contains HeartBtInt and session metadata.
LogoutResponse receivedOnixS::Eurex::DropCopy::SessionListener::onLogoutResponseFired when the exchange confirms the session logout.
ForcedLogoutNotification receivedOnixS::Eurex::DropCopy::SessionListener::onForcedLogoutNotificationFired when the exchange forcibly terminates the session. Contains a text reason.
HeartbeatNotification receivedOnixS::Eurex::DropCopy::SessionListener::onHeartbeatNotificationFired when a server-initiated heartbeat is received.
Reject receivedOnixS::Eurex::DropCopy::SessionListener::onRejectFired when the exchange rejects a client-sent message. Contains OnixS::Eurex::DropCopy::SessionRejectReason and the sequence number of the rejected message.
SessionListNotification receivedOnixS::Eurex::DropCopy::SessionListener::onSessionListNotificationFired automatically after logon. Contains the list of trading sessions the EDCI session is configured to receive data from.
PartitionListNotification receivedOnixS::Eurex::DropCopy::SessionListener::onPartitionListNotificationFired automatically after SessionListNotification. Contains the list of market partitions the EDCI session is configured to receive data from.

Order Handling Events

Order handling events cover the complete order lifecycle as observed by the drop copy feed. Implement OnixS::Eurex::DropCopy::OrderHandlingListener and register it via OnixS::Eurex::DropCopy::Handler::registerOrderHandlingListener.

EventListener methodDescription
OrderExecReportBroadcast receivedOnixS::Eurex::DropCopy::OrderHandlingListener::onOrderExecReportBroadcastExtended Order Information broadcast. Carries the full order state for every order event: new, modify, fill, cancel, suspension, and restatement. See OnixS::Eurex::DropCopy::ExecType and OnixS::Eurex::DropCopy::OrdStatus for interpretation.
DeleteOrderBroadcast receivedOnixS::Eurex::DropCopy::OrderHandlingListener::onDeleteOrderBroadcastOrder (Mass) Cancellation Notification. Carries the list of affected orders cancelled by a single event, including individual OnixS::Eurex::DropCopy::OrdStatus and OnixS::Eurex::DropCopy::ExecType per order.
SessionStatusBroadcast receivedOnixS::Eurex::DropCopy::OrderHandlingListener::onSessionStatusBroadcastTrading Session Event. Carries OnixS::Eurex::DropCopy::TradSesEvent, signaling order book state transitions per trading partition. Must be handled to correctly manage local order state. See TradingSessionEvent Semantics below.

TradingSessionEvent Semantics

OnixS::Eurex::DropCopy::SessionStatusBroadcast (OnixS::Eurex::DropCopy::TemplateId::SessionStatusBroadcast) carries OnixS::Eurex::DropCopy::TradSesEvent, which signals order book state changes per trading partition. See EDCI Manual §4.4.1 and Derivatives Message Reference §6.1.

TradSesEvent Description
OnixS::Eurex::DropCopy::TradSesEvent::StartOfOrderBookSynch Start of order book synchronization for the partition. Invalidate local order state; subsequent Extended Order Information messages deliver a snapshot of active orders.
OnixS::Eurex::DropCopy::TradSesEvent::EndOfOrderBookSynch End of order book synchronization. Local state is now consistent; treat subsequent messages as live incremental updates.
OnixS::Eurex::DropCopy::TradSesEvent::OrderBookReset Order book reset for the partition. Invalidate local order state; restatements follow, concluded per product by OnixS::Eurex::DropCopy::TradSesEvent::EndOfRestatement.
OnixS::Eurex::DropCopy::TradSesEvent::EndOfRestatement End of per-product order restatement following an order book reset. Scoped to the product in marketSegmentId. No state reset required.
OnixS::Eurex::DropCopy::TradSesEvent::EndOfDayService End of service. Last order drop copy message for this partition and business day.

TradSesEvent::StartOfOrderBookSynch

Sent per partition after a successful session logon, or when the exchange re-starts the drop copy stream for that partition due to internal issues (EDCI Manual §4.4.1). On receipt:

TradSesEvent::EndOfOrderBookSynch

Indicates that the snapshot phase is complete for the partition (EDCI Manual §4.4.1). Subsequent messages are live incremental updates.

TradSesEvent::OrderBookReset

Indicates that order book continuity for the partition was interrupted (EDCI Manual §4.4.1). On receipt:

Note
Depending on the EDCI client startup time, OnixS::Eurex::DropCopy::TradSesEvent::OrderBookReset and OnixS::Eurex::DropCopy::TradSesEvent::EndOfRestatement messages may not be received (EDCI Manual §4.4.1).

TradSesEvent::EndOfRestatement

Signals the end of per-product order restatement following an order book reset (EDCI Manual §4.4.1). The marketSegmentId field identifies the product. No local state reset is required.

TradSesEvent::EndOfDayService

The last order drop copy message for this partition and business day (EDCI Manual §4.4.1).

ExecType vs OrdStatus: Protocol Semantics

Order activity is delivered via OnixS::Eurex::DropCopy::OrderHandlingListener::onOrderExecReportBroadcast (Extended Order Information, OnixS::Eurex::DropCopy::TemplateId::OrderExecReportBroadcast) and OnixS::Eurex::DropCopy::OrderHandlingListener::onDeleteOrderBroadcast (Order (Mass) Cancellation Notification, OnixS::Eurex::DropCopy::TemplateId::DeleteOrderBroadcast). See Derivatives Message Reference §6.2 and §6.3.

ExecType (FIX tag 150)

OnixS::Eurex::DropCopy::ExecType describes the event that caused this report to be generated (Derivatives Message Reference §6.2):

ExecType Description
OnixS::Eurex::DropCopy::ExecType::New New
OnixS::Eurex::DropCopy::ExecType::Canceled Cancelled
OnixS::Eurex::DropCopy::ExecType::Replaced Replaced
OnixS::Eurex::DropCopy::ExecType::PendingCancelE Pending Cancel (e.g. result of Order Cancel Request)
OnixS::Eurex::DropCopy::ExecType::Suspended Suspended
OnixS::Eurex::DropCopy::ExecType::Restated Restated
OnixS::Eurex::DropCopy::ExecType::Triggered Triggered
OnixS::Eurex::DropCopy::ExecType::Trade Trade

OrdStatus (FIX tag 39)

OnixS::Eurex::DropCopy::OrdStatus describes the current state of the order (Derivatives Message Reference §6.2):

OrdStatus Description
OnixS::Eurex::DropCopy::OrdStatus::New New
OnixS::Eurex::DropCopy::OrdStatus::PartiallyFilled Partially filled
OnixS::Eurex::DropCopy::OrdStatus::Filled Filled
OnixS::Eurex::DropCopy::OrdStatus::Canceled Cancelled
OnixS::Eurex::DropCopy::OrdStatus::PendingCancel Pending Cancel (i.e. result of Order Cancel Request)
OnixS::Eurex::DropCopy::OrdStatus::Suspended Suspended

The combination of both fields identifies the order event and resulting state:

ExecType OrdStatus Interpretation
OnixS::Eurex::DropCopy::ExecType::New OnixS::Eurex::DropCopy::OrdStatus::New Order accepted
OnixS::Eurex::DropCopy::ExecType::Trade OnixS::Eurex::DropCopy::OrdStatus::PartiallyFilled Partial fill; order still active
OnixS::Eurex::DropCopy::ExecType::Trade OnixS::Eurex::DropCopy::OrdStatus::Filled Full fill; order complete
OnixS::Eurex::DropCopy::ExecType::Replaced OnixS::Eurex::DropCopy::OrdStatus::New Modification accepted
OnixS::Eurex::DropCopy::ExecType::Replaced OnixS::Eurex::DropCopy::OrdStatus::PartiallyFilled Modification accepted; order partially filled
OnixS::Eurex::DropCopy::ExecType::Restated OnixS::Eurex::DropCopy::OrdStatus::New or OnixS::Eurex::DropCopy::OrdStatus::PartiallyFilled Order state replay; no order event occurred
OnixS::Eurex::DropCopy::ExecType::Canceled OnixS::Eurex::DropCopy::OrdStatus::Canceled Cancellation confirmed
OnixS::Eurex::DropCopy::ExecType::PendingCancelE OnixS::Eurex::DropCopy::OrdStatus::PendingCancel Cancel request acknowledged; awaiting confirmation

Restatements

OnixS::Eurex::DropCopy::ExecType::Restated is a replay mechanism, not an exchange-side order event (Derivatives Message Reference §6.2). Apply as an insert or full-replace of the local order record. Do not generate fill notifications for OnixS::Eurex::DropCopy::ExecType::Restated messages.

Partial Fills

CumQty and LeavesQty in OnixS::Eurex::DropCopy::OrderExecReportBroadcast carry cumulative executed quantity and remaining open quantity respectively (Derivatives Message Reference §6.2). Both are absolute values — update local order state by replacing these fields, not by incrementing.

Cancellation vs PendingCancel

OnixS::Eurex::DropCopy::ExecType::PendingCancelE / OnixS::Eurex::DropCopy::OrdStatus::PendingCancel indicates a cancel request was acknowledged but not yet confirmed. The cancellation is confirmed only when OnixS::Eurex::DropCopy::ExecType::Canceled / OnixS::Eurex::DropCopy::OrdStatus::Canceled is received.

Message Fragmentation

The lastFragment field in the RBCHeader of each broadcast message indicates whether more fragments follow (Derivatives Message Reference §3.1):

LastFragment Description
OnixS::Eurex::DropCopy::LastFragment::LastMessage This is the final (or only) fragment
OnixS::Eurex::DropCopy::LastFragment::NotLastMessage Additional fragments follow

The SDK reassembles fragments transparently. Listener callbacks are invoked once, with the fully reassembled message object.