OnixS ICE iMpact Multicast Price Feed Handler C++ library 8.18.0
Users' manual and API documentation
Loading...
Searching...
No Matches
Event Listeners

Events in the Handler

The Handler exposed five major events: Exchange message received, Order Book Changed, Handler (Feed) state changed, and Error occurred.

The Exchange message received event is fired by the Handler when a subscription is started. The Handler calls the associated listener (event handler) for each message it receives. Invocation of the event handler is performed in the same thread in which the Handler::start member was called. Once the subscription is successfully started, this event will no longer be fired for subscribed markets (until the next start).

The Order Book changed event is raised by the Handler in response to notifications from the Multicast Price Feed about added or modified orders, changes in price levels, executed trades, and other events. Events of this type occur only when the subscription is active. The associated listener will never be called before Handler::start succeeds, and after the subscription is stopped using the Handler::stop member.

The Handler (Feed) state changed event is raised by the Handler when the handler's or feed's state changes.

The Error occurred event is fired by the Handler when an error condition is met. This could be a generic error, such as an inability to write to a log file, or a failure scenario, such as receiving a message from the Multicast Price Feed with an invalid sequence number. This event is raised by the Handler only when a subscription is active.

Listening for a particular event

For each of these events, Handler provides an interface (C++ class with virtual members) like ErrorListener, which has to be implemented to handle the event and a member like Handler::registerErrorListener, which allows an instance of the event handler to be associated with an appropriate event in the scope of a particular ICE iMpact Handler.

The table below depicts the correspondence between events and listeners interface:

Event Listener interface to be implemented
Futures/OTC Product Definition Received ExchangeListener::onFuturesProductDefinition
Strip Info received ExchangeListener::onStripInfo
Options Product Definition Received ExchangeListener::onOptionsProductDefinition
Options Strategy Definition Received ExchangeListener::onOptionsStrategyDefinition
Market Snapshot Message Received ExchangeListener::onMarketSnapshot
Trade Message Received ExchangeListener::onTrade
Investigated Trade Message Received ExchangeListener::onInvestigatedTrade
Cancelled Trade Message Received ExchangeListener::onCancelledTrade
Market Statistics Message Received ExchangeListener::onMarketStatistics
Market State Message Received ExchangeListener::onMarketStateChange
System Text Message Received ExchangeListener::onSystemText
Open Interest Message Received ExchangeListener::onOpenInterest
Open Price Message Received ExchangeListener::onOpenPrice
Settlement Price Message Received ExchangeListener::onSettlementPrice
Marker/Index Prices Message Received ExchangeListener::onMarkerIndexPrices
End Of Day Market Summary Received ExchangeListener::onEndOfDayMarketSummary
Market Event Message Received ExchangeListener::onMarketEvent
Pre-Open Price Indicator Message Received ExchangeListener::onPreOpenPriceIndicator
Market Snapshot Order Message Received ExchangeListener::onMarketSnapshotOrder
Add/Modify Order Message Received ExchangeListener::onAddModifyOrder
Delete Order Message Received ExchangeListener::onDeleteOrder
Bundle Marker Message Received ExchangeListener::onBundleMarker
Market Snapshot Price Level Message Received ExchangeListener::onMarketSnapshotPriceLevel
Add Price Level Message Received ExchangeListener::onAddPriceLevel
Change Price Level Message Received ExchangeListener::onChangePriceLevel
Delete Price Level Message Received ExchangeListener::onDeletePriceLevel
New Options Strategy Definition Message Received ExchangeListener::onNewOptionsStrategyDefinition
New Options Market Definition Message Received ExchangeListener::onNewOptionsMarketDefinition
RFQ Message received ExchangeListener::onRfq
Option Open Interest Message received ExchangeListener::onOptionOpenInterest
Option Settlement Price Message received ExchangeListener::onOptionSettlementPrice
Order Book updated OrderBookUpdateListener::onOrderBookUpdated
Order Book updated after message bundle OrderBookBundleUpdateListener::onOrderBookBundleUpdated
Handler state change HandlerStateChangeListener::onHandlerStateChange
Feed started FeedListener::onFeedStarted
Feed stopped FeedListener::onFeedStopped
Multicast message block begin FeedListener::onMulticastMessageBlockBegin
Multicast message block end FeedListener::onMulticastMessageBlockEnd
Error occurred ErrorListener
Log replay finished LogReplayListener::onReplayFinished

To register a particular listener there are corresponding registerListener() member of the Handler class:

Listener interface Registrar member
ExchangeListener Handler::registerExchangeListener
OrderBookUpdateListener Handler::registerOrderBookUpdateListener
OrderBookBundleUpdateListener Handler::registerOrderBookBundleUpdateListener
HandlerStateChangeListener Handler::registerHandlerStateChangeListener
FeedListener Handler::registerFeedListener
ErrorListener Handler::registerErrorListener
LogReplayListener Handler::registerLogReplayListener

Example

The following sample demonstrates how to receive notifications about errors that occur in the Handler:

// `ErrorListener` interface can be hidden from publicity
// to make Handler 'exclusive' user of the `onError` member.
class ErrorDumper : ErrorListener
{
public:
// Assigns itself to the given handler as error listener.
ErrorDumper(Handler* handler)
{
handler->registerErrorListener(this);
}
private:
// Implements base interface to dump errors to the console.
void onError(const Error& error)
{
std::cerr << "Error occurred: " << error.description() << std::endl;
}
};
HandlerSettings settings;
Handler handler(settings);
ErrorDumper errorDumper(&handler);