OnixS C++ CME Market Data Handler  2.56.0.0
Redesigned Order Books

In order to improve performance characteristics and minimize memory usage OnixS::CME::MarketData::Book class interface was split into several classes basing on book type criteria. Thus, since this Release SDK API exposes three different classes: OnixS::CME::MarketData::DirectBook, OnixS::CME::MarketData::ImpliedBook and OnixS::CME::MarketData::ConsolidatedBook. Each class exposes exact data available for particular kind of order book thus eliminating previous confusions. Also, inheritance-related overload has been eliminated making instances of new classes light-weight objects.

As a result of OnixS::CME::MarketData::Book decoupling, OnixS::CME::MarketData::Book::type member has been eliminated. Book type (direct, implied, consolidated) can be identified by its C++ class type.

Note
'Book Update' listeners have been updated to reflect changes in order book classes. Thus, listeners are now provide typified book instances.

Decoupled Price Levels

Similarly, OnixS::CME::MarketData::PriceLevel class has been split into three different classes: OnixS::CME::MarketData::DirectPriceLevel, OnixS::CME::MarketData::ImpliedPriceLevel and OnixS::CME::MarketData::ConsolidatedPriceLevel. Each class exposes exact data available for price level of particular kind of order book thus eliminating previous confusions. In particular, OnixS::CME::MarketData::ImpliedPriceLevel contains no number of order information as far as this data is available for direct order books.

OnixS::CME::MarketData::ConsolidatedPriceLevel exposes references to price levels of direct and implied order books from which instance was actually consolidated. By using OnixS::CME::MarketData::ConsolidatedPriceLevel::direct() and OnixS::CME::MarketData::ConsolidatedPriceLevel::implied() members users may access additional details of consolidated level.

PriceLevelsRef instead of PriceLevels

In previous releases, std::vector template was used to expose array of price levels causing additional memory fragmentation. Since this Release price levels are now exposed by order books as references to internally stored arrays. Thus, OnixS::CME::MarketData::BookBase as base of all book variations exposes references to price levels.

Warning
Copying price level references represented as instances of OnixS::CME::MarketData::BookBase::PriceLevelsRef type does not supposes deep coping of price-level data. Copying references behaves like shallow coping and therefore copies refer to the same internal data.

Book and Price Level States

OnixS::CME::MarketData::BookBase template class now exposes OnixS::CME::MarketData::BookBase::state member to identify whether book is fully reconstructed (OnixS::CME::MarketData::BookStates::Latest) or just naturally refreshed (OnixS::CME::MarketData::BookStates::NaturallyRefreshed).

Price level data types (OnixS::CME::MarketData::DirectPriceLevel, OnixS::CME::MarketData::ImpliedPriceLevel) now expose members (OnixS::CME::MarketData::DirectPriceLevel::exist(), OnixS::CME::MarketData::ImpliedPriceLevel::exist()) to check whether actual data is available for particular bid or ask.