OnixS ICE iMpact Multicast Price Feed Handler C++ library  8.18.0
API documentation
Connectivity Configuration

How to get the latest version of connectivity configuration files?

The latest version of connectivity configuration files available here.

Connectivity Configuration Structure

All public constructors of OnixS::ICE::iMpact::MarketData::Handler accepts the path to the connectivity configuration file as primary parameter. This file contains definitions of multicast groups and network addresses of corresponding servers to which the Handler have to connect to receive market data.

There are three major sections which make up the configuration: TCP connection information, Multicast groups, and Market types.

Shared Connection Settings

The Handler supports automatic reconnect for TCP connections and provides the following settings:

The settings above can be specified in the connectivity configuration:

1 <tcp>
2  <settings>
3  <timeoutInMilliseconds>20000</timeoutInMilliseconds>
4  <reconnectTimeoutInSeconds>16</reconnectTimeoutInSeconds>
5  <maximumNumberOfReconnectAttempts>0</maximumNumberOfReconnectAttempts>
6  </settings>
7 </tcp>

Also, you can specify TCP settings using the OnixS::ICE::iMpact::MarketData::Handler::setTcpSettings method:

// Create the Handler instance.
Handler handler(handlerSettings);
// Modify the TCP settings.
TcpSettings tcpSettings = handler.getTcpSettings();
tcpSettings.timeoutInMilliseconds = 20000;
tcpSettings.reconnectTimeoutInSeconds = 16;
tcpSettings.maximumNumberOfReconnectAttempts = 0;
// Apply the custom TCP settings to the Handler.
handler.setTcpSettings(tcpSettings);

TCP Connection Information

TCP connection information section defines attributes of remote system to which server has to connect to request primary information like product definitions for selected markets. This section also defines login information like username and password which the Handler must supply to succeed with requests.

Typical TCP connection information section looks like the following:

1 <tcp>
2  <server name="ICE">
3  <ip>63.247.113.163</ip>
4  <port>3000</port>
5  <userName>Username from ICE</userName>
6  <password>Password from ICE</password>
7  <getStripInfoMessages>N</getStripInfoMessages>
8  <strategyPreference>New</strategyPreference>
9  <localNetworkInterface>eth0</localNetworkInterface>
10  <sslEnabled>Y</sslEnabled>
11  </server>
12 </tcp>

Values of ip and port attributes define connection to remote system. userName and password are the logon-related attributes.

getStripInfoMessages used as a flag to indicate whether the client wants to get Strip Info Messages or not. Y or N. It is N by default.

sslEnabled used to enable/disable SSL for TCP connection to ICE server. By default, SSL is enabled for Non-Production and disabled for Production.

How To Specify Username And Password Using API?

If you don't want to store username and password in the connectivity configuration file, please use the Handler's API. For example:

// Create the Handler settings and specify config file.
HandlerSettings settings;
settings.connectivityConfiguration = "ConnectivityConfiguration.AP1.xml";
// When the Handler is created, `TcpSettings` object is created as well
// from the data in the connectivity configuration file.
// You can keep username and password empty in the config file.
Handler handler(settings);
// Now you can set username and password for a TCP server.
handler.setTcpServerCredentials("ICE", "username", "password");

Defining Multicast Groups

Multicast groups section defines addresses of Multicast Price Feed channels for different types of books for a particular multicast group. Example below shows how single entry have to be defined:

1 <multicast>
2  <group name="ICE Futures US Agricultures">
3  <fullOrderDepth>
4  <live ip="233.156.208.255" port="20001"/>
5  <snapshot ip="233.156.208.254" port="20002"/>
6  </fullOrderDepth>
7  <priceLevel>
8  <live ip="233.156.208.253" port="20003"/>
9  <snapshot ip="233.156.208.252" port="20004"/>
10  </priceLevel>
11  </group>
12 </multicast>

Each group entry defines connection parameters for each type of book defined by the ICE iMpact specification. Therefore, connectivity configuration supposes existence of two entries in each group entry: fullOrderDepth and priceLevel. In own turn, each such entry must contain live and snapshot sub-entries which define connection information for corresponding Multicast Price Feed channel.

Market Types

Finally, Market types section defines the correspondence between multicast groups and types of markets which make up a particular group. Like, ICE Futures Europe Oil group includes IPE Gas Oil Futures, IPE Brent Future, IPE Gas Oil Futures Crack, and other market types. So, the section defines such kind of information.

The following sample depicts how association can be defined:

1 <allMarketTypes>
2  <marketType code="4" multicastGroup="ICE Futures Europe Oil">IPE Gas Oil Futures</marketType>
3  <marketType code="5" multicastGroup="ICE Futures Europe Oil">IPE Brent Futures</marketType>
4  <marketType code="6" multicastGroup="ICE Futures Europe Oil">IPE Gas Oil Futures Crack</marketType>
5 <allMarketTypes>

Typical Connectivity Configuration

Generally, a basic configuration file looks like the following:

1 <?xml version="1.0" encoding="utf-8"?>
2 
3 <connectivityConfiguration>
4 
5 
6 
7  <tcp
8  ip="63.247.113.163"
9  port="3000"
10  userName="Value from ICE Support"
11  password="Value from ICE Support"
12  getStripInfoMessages="N"
13  localNetworkInterface=""
14  />
15 
16 
17 
18  <multicast>
19 
20  <group name="ICE Futures US (Liffe) Metals">
21  <fullOrderDepth>
22  <live ip="233.156.208.232" port="21231"/>
23  <snapshot ip="233.156.208.232" port="21230"/>
24  </fullOrderDepth>
25  <top5pl>
26  <live ip="233.156.208.232" port="21229"/>
27  <snapshot ip="233.156.208.232" port="21228"/>
28  </top5pl>
29 
30  <fullOrderDepth implied="true">
31  <live ip="233.156.208.232" port="21199"/>
32  <snapshot ip="233.156.208.232" port="21198"/>
33  </fullOrderDepth>
34  <top5pl implied="true">
35  <live ip="233.156.208.232" port="21197"/>
36  <snapshot ip="233.156.208.232" port="21196"/>
37  </top5pl>
38  </group>
39 
40  <group name="ICE Futures US (Liffe) Equity Indices">
41  <fullOrderDepth>
42  <live ip="233.156.208.232" port="21227"/>
43  <snapshot ip="233.156.208.232" port="21226"/>
44  </fullOrderDepth>
45  <top5pl>
46  <live ip="233.156.208.232" port="21225"/>
47  <snapshot ip="233.156.208.232" port="21224"/>
48  </top5pl>
49  </group>
50 
51 
52 
53  <group name="ICE Futures US (Liffe) Options">
54  <top10pl>
55  <live ip="233.156.208.232" port="21187"/>
56  <snapshot ip="233.156.208.232" port="21186"/>
57  </top10pl>
58  <topOfBook>
59  <live ip="233.156.208.232" port="21185"/>
60  <snapshot ip="233.156.208.232" port="21184"/>
61  </topOfBook>
62  </group>
63 
64  </multicast>
65 
66 
67 
68  <allMarketTypes>
69  <marketType
70  code="206"
71  multicastGroup="ICE Futures US (Liffe) Metals"
72  optionsMulticastGroup="ICE Futures US (Liffe) Options">Metals</marketType>
73  <marketType
74  code="207"
75  multicastGroup="ICE Futures US (Liffe) Equity Indices"
76  optionsMulticastGroup="ICE Futures US (Liffe) Options">IFUS Equity Indices</marketType>
77  </allMarketTypes>
78 
79 </connectivityConfiguration>