|Book Update Notification Strategies|
|Maintaining Books by Natural Refresh|
|Building and Maintaining Books by Yourself|
|Tracking Best Bids and Offers Only|
|Constructing And Copying Books|
There are several types of books available for each security: Market By Order (MBO), Direct, Implied and Consolidated. The SDK exposes the corresponding classes for each of book type: OnixS::CME::MDH::MboBook, OnixS::CME::MDH::DirectBook, OnixS::CME::MDH::ImpliedBook, and OnixS::CME::MDH::ConsolidatedBook. Each class exposes data solely available for a particular kind of order book.
The Handler notifies a client code through the OnixS::CME::MDH::SecurityListener::onBookUpdate callback once a security's book of any type is updated.
The instrument definition defines the book depth for market by price (MBP) books, which the direct, implied, and consolidated books are. It is exposed as the OnixS::CME::MDH::MbpBook::depth member. The returned value defines the maximum number of price levels that may exist in the book.
The OnixS::CME::MDH::MbpBook::bids and OnixS::CME::MDH::MbpBook::offers members of the OnixS::CME::MDH::MbpBook class are exposed to access price value and quantity information for all levels available in the book.
Similarly, the OnixS::CME::MDH::MboBook class interface includes the OnixS::CME::MDH::MboBook::bids and OnixS::CME::MDH::MboBook::offers members to access details for all orders available in the book.
Also, order book maintenance is explicitly defined by the Handler configuration.
The following code sample defines how to manage maintenance of order books using Handler settings:
The Handler constructs books for each security since the moment it receives a definition for that security. Books are changed in time, and their members are not thread-safe. The Handler uses its synchronization primitives while updating the books. Therefore, do not access price levels information outside of book-related event handling and do not store references to any book instance and data returned by its members like offers and bids collections. This restriction exists because the Handler may change internal book structures at the same time. If any data exposed by a instance instance must be used outside of event handling, it must be copied before later use.