OnixS C++ CME MDP Premium Market Data Handler  5.8.9
API Documentation
Adjusting Handler's settings

Market data processing is configured via the OnixS::CME::MDH::HandlerSettings class. The OnixS::CME::MDH::Handler class exposes an instance of this class through the OnixS::CME::MDH::Handler::settings member.

Note
The handler allows changing its settings only when market data processing is stopped.

Connectivity configuration file

The handler requires the connectivity configuration file to receive and process market data.

A single connectivity configuration file contains settings for all market data channels in the environment. CME Group uses different connectivity configuration files for different environments ("Production, "Certification", "New Release", "Autocert+", etc.).

XML-based connectivity configuration files are provided by CME and available on their public FTP servers. CME updates connectivity configuration files on a regular (weekly) basis. Visit the CME Market Data Platform Wiki for more information about the configuration update schedule and how to access public FTP servers.

On the CME FTP servers, configuration file paths have the following pattern: /SBEFix/[EnvironmentName]/Configuration/config.xml For instance, the Production configuration file path is /SBEFix/Production/Configuration/config.xml.

To specify the location of the connectivity configuration file, use the OnixS::CME::MDH::HandlerSettings::connectivityConfigurationFile method.

For example:

Handler handler;
// Specifies the configuration file's location.
handler.settings().connectivityConfigurationFile("config.xml");

Market data channel

CME market data is distributed across multiple logical units to reduce network and client system load. These logical units are called Channels.

The connectivity configuration file contains channel descriptions.

For example:

1 <configuration environment="New Release Certification" updated="2023/01/26-05:11:02">
2  <channel id="310" label="CME Globex Equity Futures">
3  <products>
4  <product code="ES">
5  <group code="ES"/>
6  </product>
7  <product code="ECES">
8  <group code="0C"/>
9  </product>
10  </products>
11  <connections>
12  <connection id="310H0A">
13  <type feed-type="H">Historical Replay</type>
14  <host-ip>69.50.112.159</host-ip>
15  <port>9000</port>
16  <feed>A</feed>
17  <protocol>TCP/IP</protocol>
18  </connection>
19  ...

The OnixS::CME::MDH::Handler class is designed to process market data transmitted in the bounds of a single CME channel. To configure the channel, use the OnixS::CME::MDH::HandlerSettings::channel method.

For example:

Handler handler;
// Selects the CME MDP 3.0 channel.
handler.settings().channel(310);

Network interfaces

To specify network interfaces use:

For example:

Handler handler;
handler.settings().feeds().feedANetworkInterfaces("eth3")
.feedBNetworkInterfaces("eth4");

Selecting the data centre

CME maintains additional data centres for exceptional cases like disaster recovery. Information on how to connect to a specific data source belonging to a particular data centre is also included in the configuration file. Therefore, both the OnixS::CME::MDH::connectivityFromConfiguration and the OnixS::CME::MDH::HandlerSettings::connectivityConfigurationFile functions include an additional parameter that allows choosing which data centre connection settings to use.

const ChannelId channel = 310;
Handler handler;
handler.settings().connectivityConfigurationFile("config.xml", DataCenter::DisasterRecovery).channel(channel);

Settings groups

Handler's settings are grouped on their purpose:

Group and Access Member Description
OnixS::CME::MDH::HandlerSettings::feeds multicast and TCP feeds
OnixS::CME::MDH::HandlerSettings::session market data processing session
OnixS::CME::MDH::HandlerSettings::tradeProcessing trade-related
OnixS::CME::MDH::HandlerSettings::bookManagement order book management
OnixS::CME::MDH::HandlerSettings::logging logging
OnixS::CME::MDH::HandlerSettings::listeners Handler's listeners