OnixS Brokertec ITCH Market Data Handler for C++  1.1.0.1
Building Order Books
Advanced Programming

The handler is able to build internal Order Books. To activate this feature, set HandlerSettings::buildInternalOrderBooks on and register OrderBookListener.

Note:
HandlerSettings::buildInternalOrderBooks is set by default
If HandlerSettings::buildInternalOrderBooks is set but OrderBookListener is not registered, onWarning callback will be invoked with a corresponding message.
If HandlerSettings::buildInternalOrderBooks is not set but OrderBookListener is registered, onWarning callback will be invoked with corresponding message.

To achieve better performance, the Order Books are created in preallocated memory area. To adjust preallocated memory pool size, set HandlerSettings::maxBooksObjectAmount. The default value is 500; If the preallocated objects amount is not enough to place all the created books, an exception will be thrown when book creation fails.

HandlerSettings settings;
settings.buildInternalOrderBooks = true;
settings.maxBooksObjectAmount = 100;
// ...
Handler handler(settings);
BookListener listener;
handler.registerOrderBookListener(&listener);

If building internal Order Books is turned on correctly, corresponding callbacks will be invoked. OrderBookListener::onOrderBookUpdated is invoked when any Order Book object state is changed. A reference to corresponding Order Book object is passed into this callback.

Note:
It is completely ok to store a const reference to OrderBook object in a user's code. The lifetime of each Order Book object (except for snapshots) is equal to the lifetime of the handler's object. But state of these objects can be changed by system at the period of time between the OrderListener callback and the OrderBookListener::onOrderBookUpdated callback when they are invoked.
It is forbidden to change state of any objects passed into user's callback.

OrderBookListener::onOrderBookOutOfDate is invoked if Order Book object is out is of date when system detects inactivity.

It is possible to make an immutable snapshot of Order Book by invoking the OrderBook::snapshot() function. It returns std::auto_ptr for the snapshot object. User can keep these objects as long as it is needed. User is in charge of destroying these objects.

To subscribe on Market Orders, register MarketOrdersListener.