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.
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.
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.
| Event | Listener method | Description |
| LogonResponse received | OnixS::Eurex::DropCopy::SessionListener::onLogonResponse | Fired when the exchange accepts the session logon. Contains HeartBtInt and session metadata. |
| LogoutResponse received | OnixS::Eurex::DropCopy::SessionListener::onLogoutResponse | Fired when the exchange confirms the session logout. |
| ForcedLogoutNotification received | OnixS::Eurex::DropCopy::SessionListener::onForcedLogoutNotification | Fired when the exchange forcibly terminates the session. Contains a text reason. |
| HeartbeatNotification received | OnixS::Eurex::DropCopy::SessionListener::onHeartbeatNotification | Fired when a server-initiated heartbeat is received. |
| Reject received | OnixS::Eurex::DropCopy::SessionListener::onReject | Fired when the exchange rejects a client-sent message. Contains OnixS::Eurex::DropCopy::SessionRejectReason and the sequence number of the rejected message. |
| SessionListNotification received | OnixS::Eurex::DropCopy::SessionListener::onSessionListNotification | Fired automatically after logon. Contains the list of trading sessions the EDCI session is configured to receive data from. |
| PartitionListNotification received | OnixS::Eurex::DropCopy::SessionListener::onPartitionListNotification | Fired automatically after SessionListNotification. Contains the list of market partitions the EDCI session is configured to receive data from. |
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.
| Event | Listener method | Description |
| OrderExecReportBroadcast received | OnixS::Eurex::DropCopy::OrderHandlingListener::onOrderExecReportBroadcast | Extended 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 received | OnixS::Eurex::DropCopy::OrderHandlingListener::onDeleteOrderBroadcast | Order (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 received | OnixS::Eurex::DropCopy::OrderHandlingListener::onSessionStatusBroadcast | Trading 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. |
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. |
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:
Indicates that the snapshot phase is complete for the partition (EDCI Manual §4.4.1). Subsequent messages are live incremental updates.
Indicates that order book continuity for the partition was interrupted (EDCI Manual §4.4.1). On receipt:
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.
The last order drop copy message for this partition and business day (EDCI Manual §4.4.1).
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.
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 |
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:
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.
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.
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.
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.