|Adjusting Handler Settings|
|Setting Up Feed Engine|
|Handling Issues Like Errors and Warnings|
|Market Data Processing Session|
|Listening to Market Data|
|Trade Order Details|
|Selecting Securities of Interest|
|Using TCP Recovery Facility|
|Replaying Logs, PCAPs CME DataMine/Historical Data|
Following sections guide through the major steps to be done to succeed with market data processing.
The SDK needs a valid license for successful execution. If the licensing subsystem is not able to find a valid license, it throws an exception at the initialization stage when the OnixS::CME::MDH::initialize is called. Also, a license is verified each time an attempt to start market data processing is done using the OnixS::CME::MDH::Handler::start member.
The OnixS::CME::MDH::InitializationSettings class exposes the OnixS::CME::MDH::InitializationSettings::licenseStore member which must be used to instruct the SDK where to look for a valid license. By default, the licensing services look for a license in the current directory of the application. However, by using the noted parameter, it is possible to specify another folder anywhere on the file system.
The following example demonstrates how to perform one-time initialization of the SDK services:
The OnixS::CME::MDH::Handler class encapsulates a market data processing machinery. The class is designed to process market data transmitted by the CME MDP in bounds of a single channel.
The OnixS::CME::MDH::HandlerSettings class contains all parameters controlling various aspects of market data processing. The OnixS::CME::MDH::HandlerSettings class provides access to the settings through the OnixS::CME::MDH::Handler::settings member.
The users can change settings affecting market data processing behavior at any time when the instance of the OnixS::CME::MDH::Handler class is not processing market data.
In most cases, default values are set for parameters defining the most likely behavior of the OnixS::CME::MDH::Handler instance. However, some parameters must be set explicitly before spawning market data processing:
See Handler's Settings for more information on adjusting behavior of the Handler.
The OnixS::CME::MDH::NetFeedEngine class encapsulates machinery responsible for delivering market data from sources like the CME MDP to the Handler. Therefore, to succeed with market data processing, it is necessary to construct an instance of any of the Feed Engine implementations (the SDK provides a few ready-to-use implementations like the OnixS::CME::MDH::SocketFeedEngine one) and to bind it to the instance of the OnixS::CME::MDH::Handler class:
See Feed Engine for more details on Feed Engine.
The Handler can log market data it processes and well as other important events which may take place during regular market data processing.
The OnixS::CME::MDH::Logger abstract class encapsulates the logging subsystem. The SDK provides various implementations of logging for different purposes. File-based logging is a satisfactory choice for the most cases.
Below is an example of how file based logging can be established:
Once an instance of the OnixS::CME::MDH::Handler is constructed and bound to an instance of the OnixS::CME::MDH::NetFeedEngine, market data processing can be started. In order to get the results of market data processing, it's necessary to subscribe to corresponding events to get the results of market data processing like updated order books.
See the Event Listeners topic concerning which events are exposed by the Handler and how to subscribe to a particular event.
As soon as the OnixS::CME::MDH::Handler class instance is configured, bound to a OnixS::CME::MDH::NetFeedEngine class instance and listeners for events are registered, market data processing can be initiated:
The OnixS::CME::MDH::Handler::stop member must be called to accomplish market data processing by the Handler: