OnixS C++ CME iLink 3 Binary Order Entry Handler 1.18.9
API Documentation
Loading...
Searching...
No Matches
SessionSettings.h
Go to the documentation of this file.
1/*
2 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3 *
4 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5 * and international copyright treaties.
6 *
7 * Access to and use of the software is governed by the terms of the applicable OnixS Software
8 * Services Agreement (the Agreement) and Customer end user license agreements granting
9 * a non-assignable, non-transferable and non-exclusive license to use the software
10 * for it's own data processing purposes under the terms defined in the Agreement.
11 *
12 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13 * of this source code or associated reference material to any other location for further reproduction
14 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15 *
16 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 * the terms of the Agreement is a violation of copyright law.
18 */
19
20#pragma once
21
25
26#include <climits>
27#include <set>
28#include <string>
29#include <vector>
30
31namespace OnixS {
32namespace CME {
33namespace iLink3 {
34
39{
40public:
43
48 const std::string & sessionId() const ONIXS_ILINK3_NOTHROW {
49 return sessionId_;
50 }
51
54 SessionSettings& sessionId(const std::string & value);
55
60 const std::string & firmId() const ONIXS_ILINK3_NOTHROW {
61 return firmId_;
62 }
63
66 SessionSettings& firmId(const std::string & value);
67
72 const std::string & accessKey() const ONIXS_ILINK3_NOTHROW {
73 return accessKey_;
74 }
75
78 SessionSettings& accessKey(const std::string & value);
79
84 const std::string & secretKey() const ONIXS_ILINK3_NOTHROW {
85 return secretKey_;
86 }
87
90 SessionSettings& secretKey(const std::string & value);
91
96 const std::string & tradingSystemName() const ONIXS_ILINK3_NOTHROW {
97 return tradingSystemName_;
98 }
99
102 SessionSettings& tradingSystemName(const std::string & value);
103
108 const std::string & tradingSystemVersion() const ONIXS_ILINK3_NOTHROW {
109 return tradingSystemVersion_;
110 }
111
114 SessionSettings& tradingSystemVersion(const std::string & value);
115
120 const std::string & tradingSystemVendor() const ONIXS_ILINK3_NOTHROW {
121 return tradingSystemVendor_;
122 }
123
126 SessionSettings& tradingSystemVendor(const std::string & value);
127
133 return threadingModel_;
134 }
135
139
145 return receiveSpinningTimeout_;
146 }
147
151
157 return sendSpinningTimeout_;
158 }
159
162 SessionSettings& sendSpinningTimeout(unsigned usecTimeout);
163
173 return messageGrouping_;
174 }
175
179
182
185 SessionSettings& addLicenseStore(const std::string& value);
186
189 SessionSettings& licenseStore(const std::string & value);
190
192 typedef std::vector<std::string> LicenseStores;
193
199 return licenseStores_;
200 }
201
207 return licenseAlertingDaysBeforeExpiration_;
208 }
209
218 licenseAlertingDaysBeforeExpiration_ = days;
219 return *this;
220 }
221
226 const std::string & localNetworkInterface() const ONIXS_ILINK3_NOTHROW {
227 return localNetworkInterface_;
228 }
229
235 SessionSettings& localNetworkInterface(const std::string & value);
236
241 const std::string & logFileName() const ONIXS_ILINK3_NOTHROW {
242 return logFileName_;
243 }
244
247 SessionSettings& logFileName(const std::string & value);
248
255 const std::string & storageDirectory() const ONIXS_ILINK3_NOTHROW {
256 return storageDirectory_;
257 }
258
263 SessionSettings& storageDirectory(const std::string & value);
264
270 return localTimeUsage_;
271 }
272
278
284 return fileBasedStorageSegmentSize_;
285 }
286
290
296 return asyncFileBasedStorageQueueMaxSize_;
297 }
298
302
308 return asyncFileBasedStorageThreadAffinity_;
309 }
310
314
323 return ignoreFileBasedStorageIntegrityErrors_;
324 }
325
329
335 return logBeforeSending_;
336 }
337
343
349 return reconnectAttempts_;
350 }
351
355
361 return reconnectInterval_;
362 }
363
368
370 static const int UseOsDefaultSocketBufferSize = -1;
371
377 return socketReceiveBufferSize_;
378 }
379
386
392 return reasonableTransmissionTime_;
393 }
394
398
404 return socketSendBufferSize_;
405 }
406
413
417 return threadPoolAffinity_;
418 }
419
423
427 return threadPoolPriority_;
428 }
429
433
437 return threadPoolPolicy_;
438 }
439
443
449 return tcpNoDelayOption_;
450 }
451
455
461 return threadPoolSize_;
462 }
463
466 SessionSettings& threadPoolSize(unsigned numberOfThreads);
467
473 return keepAliveInterval_;
474 }
475
481 SessionSettings& keepAliveInterval(unsigned milliseconds);
482
490 return reportNewMessagesWhileWaitingForMissedMessages_;
491 }
492
498
502
506 return localPortRange_;
507 }
508
514
518 return messagingSchemaVersion_;
519 }
520
526 return detectMessageGapForPreviousUuid_;
527 }
528
532
538 return useSpinLock_;
539 }
540
544
550 return enableRxTimestamp_;
551 }
552
557
562 SessionSettings& load(const std::string& configFile);
563
566 std::string toString() const;
567
571 static const bool CreateLogFile = true;
572 static const int KeepAliveInterval = 30000;
573 static const bool LogBeforeSending = true;
576 static const bool TcpNoDelayOption = true;
577 static const int ReceiveSpinningTimeout = 0;
578 static const int SendSpinningTimeout = 0;
579 static const char LicenseStore[] ;
580 static const unsigned LicenseAlertingDaysBeforeExpiration = 0;
581 static const char LogDir[];
582 static const char LogFileName[];
583 static const bool LocalTimeUsage = false;
584 static const unsigned MessageGrouping = 0;
585 static const int ReasonableTransmissionTime = 20;
586 static const int ReconnectAttempts = 3;
587 static const int ReconnectInterval = 180;
588 static const unsigned long long FileBasedStorageSegmentSize = 0;
589 static const bool IgnoreFileBasedStorageIntegrityErrors = false;
590 static const int ThreadPoolSize = 0;
592 static const unsigned AsyncFileBasedStorageQueueMaxSize = UINT_MAX;
593 static const bool DetectMessageGapForPreviousUuid = true;
594 static const bool UseSpinLock = false;
595 static const bool EnableRxTimestamp = false;
596 };
597
600 static const char * SessionId;
601 static const char * FirmId;
602 static const char * AccessKey;
603 static const char * SecretKey;
604 static const char * TradingSystemName;
605 static const char * TradingSystemVersion;
606 static const char * TradingSystemVendor;
607
610 static const char * ThreadingModel;
611 static const char * TcpNoDelayOption;
612 static const char * MessageGrouping;
613 static const char * FileBasedStorageSegmentSize;
615 static const char * KeepAliveInterval;
616 static const char * LicenseFile;
617 static const char * LicenseStore;
619 static const char * LocalNetworkInterface;
620 static const char * LogFileName;
621 static const char * LocalTimeUsage;
622 static const char * LogBeforeSending;
623 static const char * ReasonableTransmissionTime;
624 static const char * ReceiveSpinningTimeout;
625 static const char * ReconnectAttempts;
626 static const char * ReconnectInterval;
627 static const char * SendSpinningTimeout;
628 static const char * ThreadPoolAffinity;
629 static const char * ThreadPoolSize;
630 static const char * ThreadPoolPriority;
631 static const char * ThreadPoolPolicy;
632 static const char * SocketReceiveBufferSize;
633 static const char * SocketSendBufferSize;
634 static const char * StorageDirectory;
636 static const char * MessagingSchemaVersion;
637 static const char * LocalPortRange;
639 static const char * UseSpinLock;
640 static const char * EnableRxTimestamp;
641 };
642
643private:
644 void processLicenseStores(const std::string& licenseStore);
645
646 std::string accessKey_;
647
648 unsigned asyncFileBasedStorageQueueMaxSize_;
649
650 CpuIndexes asyncFileBasedStorageThreadAffinity_;
651
652 bool createEngineLogFile_;
653
654 Messaging::UInt64 fileBasedStorageSegmentSize_;
655
656 std::string firmId_;
657
658 bool ignoreFileBasedStorageIntegrityErrors_;
659
660 unsigned keepAliveInterval_;
661
662 unsigned licenseAlertingDaysBeforeExpiration_;
663
664 std::string licenseFilePath_;
665
666 LicenseStores licenseStores_;
667
668 std::string localNetworkInterface_;
669
670 bool localTimeUsage_;
671
672 bool logBeforeSending_;
673
674 std::string logFileName_;
675
676 unsigned messageGrouping_;
677
678 unsigned reasonableTransmissionTime_;
679
680 int receiveSpinningTimeout_;
681
682 unsigned reconnectAttempts_;
683
684 unsigned reconnectInterval_;
685
686 bool reportNewMessagesWhileWaitingForMissedMessages_;
687
688 std::string secretKey_;
689
690 int sendSpinningTimeout_;
691
692 std::string sessionId_;
693
694 int socketReceiveBufferSize_;
695
696 int socketSendBufferSize_;
697
698 std::string storageDirectory_;
699
700 bool tcpNoDelayOption_;
701
702 ThreadingModel::Enum threadingModel_;
703
704 CpuIndexes threadPoolAffinity_;
705
706 int threadPoolPolicy_;
707
708 int threadPoolPriority_;
709
710 unsigned threadPoolSize_;
711
712 std::string tradingSystemName_;
713
714 std::string tradingSystemVendor_;
715
716 std::string tradingSystemVersion_;
717
718 std::pair<Port, Port> localPortRange_;
719
720 Messaging::SchemaVersion messagingSchemaVersion_;
721
722 bool detectMessageGapForPreviousUuid_;
723
724 bool useSpinLock_;
725
726 bool enableRxTimestamp_;
727};
728
729}
730}
731}
#define ONIXS_ILINK3_NODISCARD
Definition Compiler.h:185
#define ONIXS_ILINK3_EXPORTED
Definition Compiler.h:175
#define ONIXS_ILINK3_NOTHROW
Definition Compiler.h:176
int socketSendBufferSize() const noexcept
unsigned messageGrouping() const noexcept
SessionSettings & threadPoolSize(unsigned numberOfThreads)
Sets the size of the shared thread pool.
unsigned licenseAlertingDaysBeforeExpiration() const noexcept
SessionSettings & resetToDefaults()
Resets the settings to the default values.
const CpuIndexes & asyncFileBasedStorageThreadAffinity() const noexcept
const std::string & secretKey() const noexcept
SessionSettings & ignoreFileBasedStorageIntegrityErrors(bool)
Sets the file-based storage integrity errors checking mode.
SessionSettings & asyncFileBasedStorageQueueMaxSize(unsigned value)
Sets the maximum size of the asynchronous session storage queue.
SessionSettings & reconnectAttempts(unsigned reconnectAttempts)
Sets the maximum number of tries to restore the telecommunications link.
const std::string & firmId() const noexcept
SessionSettings & threadingModel(ThreadingModel::Enum value)
Sets the threading model.
SessionSettings & localTimeUsage(bool)
Specifies the usage of the local time in Handler events and log files.
int socketReceiveBufferSize() const noexcept
const std::string & localNetworkInterface() const noexcept
SessionSettings & sendSpinningTimeout(unsigned usecTimeout)
Sets the send spinning timeout (microseconds).
unsigned reconnectInterval() const noexcept
SessionSettings & keepAliveInterval(unsigned milliseconds)
Sets the longest time in milliseconds the client system can remain silent before sending a message.
SessionSettings & threadPoolPriority(int priority)
Sets the thread pool priority.
SessionSettings & socketSendBufferSize(int bufferSize)
Sets the size of the socket send buffer size.
bool reportNewMessagesWhileWaitingForMissedMessages() const noexcept
SessionSettings & threadPoolAffinity(const CpuIndexes &cpuIndexes)
Sets the thread pool affinity.
SessionSettings & secretKey(const std::string &value)
Sets the secret key that was assigned by the exchange.
SessionSettings & tradingSystemName(const std::string &value)
Sets the trading system name.
unsigned threadPoolSize() const noexcept
SessionSettings & messageGrouping(unsigned value)
Sets the message grouping mode.
const std::string & tradingSystemVendor() const noexcept
SessionSettings & reportNewMessagesWhileWaitingForMissedMessages(bool report)
Sets the option to report new messages even when the message gap is detected, and the reply on the Re...
SessionSettings & reconnectInterval(unsigned value)
Sets the time interval between retries to restore the telecommunications link (seconds).
SessionSettings & asyncFileBasedStorageThreadAffinity(const CpuIndexes &cpuIndexes)
Specifies the CPU index(es) for affinity of the asynchronous session storage threads.
SessionSettings & socketReceiveBufferSize(int bufferSize)
Sets the socket receive buffer size.
SessionSettings & enableRxTimestamp(bool value)
Sets the value of the option to enable received data timestamp.
unsigned asyncFileBasedStorageQueueMaxSize() const noexcept
const CpuIndexes & threadPoolAffinity() const noexcept
Messaging::SchemaVersion messagingSchemaVersion() const noexcept
SessionSettings & localNetworkInterface(const std::string &value)
Specifies the local interface from which the Handler connects to the counterparty.
SessionSettings & detectMessageGapForPreviousUuid(bool detectGap)
Sets the value of the option to detect the message gap for the previous UUID.
SessionSettings & sessionId(const std::string &value)
Sets the session id that was assigned by the exchange.
SessionSettings & fileBasedStorageSegmentSize(Messaging::UInt64 value)
Sets the segment size for file-based session storage.
SessionSettings & useSpinLock(bool value)
Sets the value of the option to the option to use spin lock.
const std::string & sessionId() const noexcept
SessionSettings & tradingSystemVendor(const std::string &value)
Sets the trading system vendor.
unsigned receiveSpinningTimeout() const noexcept
SessionSettings & reasonableTransmissionTime(unsigned percentage)
Sets the reasonable transmission time - as the percentage from the KeepAliveInterval value.
unsigned reconnectAttempts() const noexcept
SessionSettings & load(const std::string &configFile)
Loads the settings from the given configuration file.
SessionSettings & logBeforeSending(bool before)
Controls the order of logging and sending outbound messages.
bool enableRxTimestamp() const noexcept
SessionSettings & storageDirectory(const std::string &value)
Sets the Session Storage directory.
SessionSettings & logFileName(const std::string &value)
Specifies the Handler log file name.
SessionSettings & accessKey(const std::string &value)
Sets the access key that was assigned by the exchange.
SessionSettings & localPortRange(PortRange range)
Sets the range of the local ports to be used.
SessionSettings & messagingSchemaVersion(Messaging::SchemaVersion schema)
Specifies the version of the message schema.
bool ignoreFileBasedStorageIntegrityErrors() const noexcept
bool detectMessageGapForPreviousUuid() const noexcept
Messaging::UInt64 fileBasedStorageSegmentSize() const noexcept
SessionSettings & receiveSpinningTimeout(unsigned usecTimeout)
Sets the receive spinning timeout (microseconds).
const std::string & tradingSystemName() const noexcept
SessionSettings & addLicenseStore(const std::string &value)
Adds the path to the folder that contains license file(s).
SessionSettings & tcpNoDelayOption(bool value)
Sets the value of the option to improve latency at the expense of message throughput (the TCP_NODELAY...
SessionSettings & tradingSystemVersion(const std::string &value)
Sets the trading system version.
const std::string & tradingSystemVersion() const noexcept
SessionSettings & licenseStore(const std::string &value)
Sets the path to the folder that contains license file(s).
const LicenseStores & licenseStores() const noexcept
SessionSettings & threadPoolPolicy(int policy)
Sets the thread pool policy.
SessionSettings & firmId(const std::string &value)
Sets the firm id that was assigned by the exchange.
SessionSettings & licenseAlertingDaysBeforeExpiration(unsigned days)
Sets the number of days to alert before the license expiration.
PortRange localPortRange() const noexcept
static const int UseOsDefaultSocketBufferSize
Specifies the usage of the operating system default socket buffer size.
unsigned sendSpinningTimeout() const noexcept
unsigned keepAliveInterval() const noexcept
const std::string & storageDirectory() const noexcept
std::vector< std::string > LicenseStores
Folders that contain license file(s).
const std::string & accessKey() const noexcept
ThreadingModel::Enum threadingModel() const noexcept
unsigned reasonableTransmissionTime() const noexcept
const std::string & logFileName() const noexcept
MessageHeader::Version SchemaVersion
SBE-encoded data version type.
std::pair< Port, Port > PortRange
Definition Defines.h:74
std::set< CpuIndex > CpuIndexes
Definition Defines.h:73
static const unsigned long long FileBasedStorageSegmentSize
static const unsigned LicenseAlertingDaysBeforeExpiration
static const ThreadingModel::Enum ThreadingModelValue
The keys that are used to load settings from the configuration file.
static const char * AsyncFileBasedStorageThreadAffinity
= "AsyncFileBasedStorage.ThreadAffinity"
static const char * ReconnectAttempts
= "Reconnect.Attempts"
static const char * SocketReceiveBufferSize
= "Socket.ReceiveBufferSize"
static const char * UseSpinLock
= "UseSpinLock"
static const char * DetectMessageGapForPreviousUuid
= "DetectMessageGapForPreviousUuid"
static const char * LicenseStore
= "LicenseStore"
static const char * EnableRxTimestamp
= "EnableRxTimestamp"
static const char * ThreadPoolAffinity
= "ThreadPool.Affinity"
static const char * ReasonableTransmissionTime
= "ReasonableTransmissionTime"
static const char * AsyncFileBasedStorageQueueMaxSize
= "AsyncFileBasedStorage.QueueMaxSize"
static const char * SendSpinningTimeout
= "SendSpinningTimeout"
static const char * LicenseFile
= "LicenseFile"
static const char * ThreadingModel
= "ThreadingModel"
static const char * MessageGrouping
= "MessageGrouping"
static const char * TradingSystemName
= "TradingSystem.Name"
static const char * LogBeforeSending
= "Log.BeforeSending"
static const char * TcpNoDelayOption
= "TcpNoDelayOption"
static const char * FirmId
= "FirmId"
static const char * TradingSystemVendor
= "TradingSystem.Vendor"
static const char * KeepAliveInterval
= "KeepAliveInterval"
static const char * IgnoreFileBasedStorageIntegrityErrors
= "IgnoreFileBasedStorageIntegrityErrors"
static const char * LocalTimeUsage
= "LocalTimeUsage"
static const char * SessionId
= "SessionId"
static const char * ThreadPoolPolicy
= "ThreadPool.Policy"
static const char * SocketSendBufferSize
= "Socket.SendBufferSize"
static const char * ThreadPoolPriority
= "ThreadPool.Priority"
static const char * ReportNewMessagesWhileWaitingForMissedMessages
= "ReportNewMessagesWhileWaitingForMissedMessages"
static const char * FileBasedStorageSegmentSize
= "FileBasedStorageSegmentSize"
static const char * LicenseAlertingDaysBeforeExpiration
= "LicenseAlertingDaysBeforeExpiration"
static const char * LocalNetworkInterface
= "LocalNetworkInterface"
static const char * LogFileName
= "Log.FileName"
static const char * SecretKey
= "SecretKey"
static const char * ReconnectInterval
= "Reconnect.Interval"
static const char * StorageDirectory
= "Log.Directory"
static const char * AccessKey
= "AccessKey"
static const char * MessagingSchemaVersion
= "MessagingSchemaVersion"
static const char * ThreadPoolSize
= "ThreadPool.Size"
static const char * LocalPortRange
= "LocalPortRange"
static const char * ReceiveSpinningTimeout
= "ReceiveSpinningTimeout"
static const char * TradingSystemVersion
= "TradingSystem.Version"
@ Dedicated
Each session has a sender thread and a receiving thread.