OnixS Brokertec ITCH Market Data Handler for C++  1.1.0.1
The simplest way to get market data
Getting Started

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.

Note:
When a packet gap occurs there is no actions to be performed from the user side. The Handler does all the job automatically.

Example

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;

Note:
The full code can be found in GettingStarted sample project code.