Public reference data, delivered by Brokertec Exchange, contains the technical configuration, e.g. multicast address and port combinations for market data interface, address and port combinations for recovery service.
The following example demonstrates how to use OnixS::Brokertec::MarketData::Itch::Handler:
// Listeners definition, add all the required callbacks class MyListener : public PacketListener, public PacketGapListener, public WarningListener, public ErrorListener { public: /// Constructor MyListener(); /// Destructor virtual ~MyListener(); /// Notification about errors virtual void onError (ErrorCode::Enum code, const std::string& description) {}; /// Notification when the Warning condition is detected virtual void onWarning (const std::string& reason) {}; /// Is called when a new packet is ready for processing virtual void onData (const char* data, size_t length, const Timestamp& packetReceptionTime) {}; /// Is called when a packet gap occurs virtual void onPacketGap (const Byte* session, SequenceNumber expectedSeqNum, SequenceNumber receivedSeqNum) {}; /// Is called when the book is updated. virtual void onOrderBookUpdated (const OrderBook& book); /// Is called when no data is coming during a reasonable /// period of time. Since the moment of call books /// must be considered as outdated. Further /// call of 'onOrderBookUpdated' members make a particular /// book as up-to-date. virtual void onOrderBookOutOfDate (const OrderBook& book); /// Callback is invoked when a corresponded message is received virtual void onTime (const TimeMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderBookDirectory (const OrderBookDirectoryMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onCombinationOrderBookDirectory (const CombinationOrderBookDirectoryMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onTickSizeTableEntry (const TickSizeTableEntryMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onSystemEvent (const SystemEventMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderBookState (const OrderBookStateMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onWorkupInformation (const WorkupInformationMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onAddOrder (const AddOrderMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onAddAtributedOrder (const AddAtributedOrderMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderExecuted (const OrderExecutedMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderExecutedWithPrice (const OrderExecutedWithPriceMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderReplace (const OrderReplaceMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onOrderDelete (const OrderDeleteMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onTrade (const TradeMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onTradeSummary (const TradeSummaryMsg& msg, const DataSource& dataSource); /// Callback is invoked when a corresponded message is received virtual void onEquilibriumPriceUpdate (const EquilibriumPriceUpdateMsg& msg, const DataSource& dataSource); }; // Create an instance handler's settings. OnixS::Brokertec::MarketData::Itch::HandlerSettings handlerSettings; // ... // adjust Handler's settings as described above OnixS::Brokertec::MarketData::Itch::Handler handler (settings); // Listener's instance MyListener myListener; // register callbacks handler.registerErrorListener (&myListener); handler.registerWarningListener (&myListener); handler.registerPacketGapListener (&myListener); handler.registerPacketListener (&myListener); handler.registerMessageListener (&myListener); try { // start the handler handler.start(); } catch (const std::exception& ex) { clog << "Unable to start the handler: " << ex.what() << endl; } catch (...) { clog << "Unable to start the handler" << endl; } clog << "Please press Enter key to stop the handler..." << endl; waitUntilEnterKey (); clog << "Stopping..." << endl; // stop the handler handler.stop (true); clog << "The Handler has been stopped." << endl;