OnixS C++ CME iLink 3 Binary Order Entry Handler  1.17.0
API Documentation
File-Based Session Storage

File-Based Session Storage keeps incoming and outgoing messages and session's state data in files in the OnixS::CME::iLink3::SessionSettings::storageDirectory folder.

For each iLink 3 session the following files are created:

SESSION_NAME is formed on the base of OnixS::CME::iLink3::Session::id, OnixS::CME::iLink3::SessionSettings::firmId, MarketSegmentId and a timestamp. It is available via the OnixS::CME::iLink3::Session::storageId method.

Segmented File-Based Storage

Sometimes it is needed to save space on disk, and there is no need to keep the whole history of incoming and outgoing messages. File-Based Storage could be configured to store messages in a set of .summary files, instead of a single one. The entire collection of logged messages is split through several files called "segments", and older segments could be archived.

The Segmented mode of the File-based Storage is activated when the OnixS::CME::iLink3::SessionSettings::fileBasedStorageSegmentSize(Messaging::UInt64 value) is set to a positive value.

Segments are named as StorageID[-part-N].summary, where:

During the session lifetime, new segment files are created per the following algorithm:

So during a long session, a set of files could be created: StorageID.summary, StorageID-part-1.summary, StorageID-part-2.summary, etc. . Oldest messages are stored in the StorageID-part-1.summary file, and newer ones - in the StorageID.summary and StorageID-part-N.summary files, where N is the maximum value.

The number of segments is recorded in the StorageID.state file after the FilePartCount key. For instance, if there are 5 segments, (StorageID.summary, StorageID-part-1.summary, ... , StorageID-part-4.summary) the following line will be stored in the StorageID.state file:

FilePartCount=5

Examples

File-Based Storage without segmentation

using namespace OnixS::CME::iLink3;
SessionSettings settings;
const int MarketSegmentId = 54;
Session session(settings, MarketSegmentId, nullptr, SessionStorageType::FileBased);

Segmented storage

using namespace OnixS::CME::iLink3;
SessionSettings settings;
settings.fileBasedStorageSegmentSize(256 * 1024);
const int MarketSegmentId = 54;
Session session(settings, MarketSegmentId, nullptr, SessionStorageType::FileBased);