The Handler supports replay of market data not only from log files but from PCAP files as well. PCAP is a widely used capture file format and the data in this format could be produced by many networking tools.
The Handler requires the following data for replay:
In the current implementation, the Handler supports replay from PCAP for snapshot and live UDP data only. TCP data should be provided as a raw network dump.
As far as there are many ways to create the PCAP data the Handler uses identifiers for different data providers. For now, the Handler supports only one data provider. But it is possible to add any custom data provider by request. Please contact to our Sales Team if you want to replay PCAP data from a source which is not currently supported.
Supported PCAP data providers:
The Handler supports converting PCAP data to the log file format. In the package, under tools/PcapConverter
you can find a tool which is designed for this. Please see detailed documentation on this tool in the tools/PcapConverter/README.md
.
The Handler also supported direct replay from the files, provided by IDS. To make it possible the user should created an instance of OnixS::ICE::iMpact::MarketData::PcapDataProvider
using OnixS::ICE::iMpact::MarketData::PcapDataProviderFactory::create
method and then assign it to OnixS::ICE::iMpact::MarketData::HandlerSettings::inputStream
.
For example:
The interface OnixS::ICE::iMpact::MarketData::PcapDataProvider
inherits an interface for a custom log replay input stream, i.e. OnixS::ICE::iMpact::MarketData::LogReplayInputStream
. This interface is used when instead of plain log file some custom data source should be used.
For more details how all pieces work together please see PcapReplay
sample. This sample also includes a sample of PCAP data which can be used to check how it works.
For replayed packets, the Handler uses the same timestamps as available in the PCAP file for UDP data. But for TCP there is no such source so the Handler just uses the current timestamp. The timestamp is available in OnixS::ICE::iMpact::MarketData::MessageInfo::receiveTime
and in OnixS::ICE::iMpact::MarketData::Packet::time
if the user uses OnixS::ICE::iMpact::MarketData::PacketProcessingListener
.