OnixS C++ ICE Binary Order Entry Handler 1.1.1
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
22#include <OnixS/ICE/BOE/ABI.h>
26
27#include <climits>
28#include <set>
29#include <string>
30#include <vector>
31
33
38{
39public:
42
47 const std::string & userId() const noexcept
48 {
49 return userId_;
50 }
51
54 SessionSettings& userId(const std::string & value);
55
60 Messaging::Int32 clientId() const noexcept
61 {
62 return clientId_;
63 }
64
68
73 const std::string& rawData() const noexcept
74 {
75 return rawData_;
76 }
77
80 SessionSettings& rawData(const std::string& value);
81
87 {
88 return threadingModel_;
89 }
90
94
99 unsigned receiveSpinningTimeout() const noexcept
100 {
101 return receiveSpinningTimeout_;
102 }
103
107
112 unsigned sendSpinningTimeout() const noexcept
113 {
114 return sendSpinningTimeout_;
115 }
116
119 SessionSettings& sendSpinningTimeout(unsigned usecTimeout);
120
129 unsigned messageGrouping() const noexcept
130 {
131 return messageGrouping_;
132 }
133
137
140
143 SessionSettings& addLicenseStore(const std::string& value);
144
147 SessionSettings& licenseStore(const std::string & value);
148
150 typedef std::vector<std::string> LicenseStores;
151
156 const LicenseStores& licenseStores() const noexcept
157 {
158 return licenseStores_;
159 }
160
165 unsigned licenseAlertingDaysBeforeExpiration() const noexcept
166 {
167 return licenseAlertingDaysBeforeExpiration_;
168 }
169
178 {
179 licenseAlertingDaysBeforeExpiration_ = days;
180 return *this;
181 }
182
187 const std::string & localNetworkInterface() const noexcept
188 {
189 return localNetworkInterface_;
190 }
191
197 SessionSettings& localNetworkInterface(const std::string & value);
198
205 const std::string & storageDirectory() const noexcept
206 {
207 return storageDirectory_;
208 }
209
214 SessionSettings& storageDirectory(const std::string & value);
215
220 bool localTimeUsage() const noexcept
221 {
222 return localTimeUsage_;
223 }
224
230
236 {
237 return fileBasedStorageSegmentSize_;
238 }
239
243
248 unsigned asyncFileBasedStorageQueueMaxSize() const noexcept
249 {
250 return asyncFileBasedStorageQueueMaxSize_;
251 }
252
256
262 {
263 return asyncFileBasedStorageThreadAffinity_;
264 }
265
269
278 {
279 return ignoreFileBasedStorageIntegrityErrors_;
280 }
281
285
290 bool logBeforeSending() const noexcept
291 {
292 return logBeforeSending_;
293 }
294
300
305 unsigned reconnectAttempts() const noexcept
306 {
307 return reconnectAttempts_;
308 }
309
313
318 unsigned reconnectInterval() const noexcept
319 {
320 return reconnectInterval_;
321 }
322
327
329 static const int UseOsDefaultSocketBufferSize = -1;
330
335 int socketReceiveBufferSize() const noexcept
336 {
337 return socketReceiveBufferSize_;
338 }
339
346
351 unsigned reasonableTransmissionTime() const noexcept
352 {
353 return reasonableTransmissionTime_;
354 }
355
359
364 int socketSendBufferSize() const noexcept
365 {
366 return socketSendBufferSize_;
367 }
368
375
378 const CpuIndexes & threadPoolAffinity() const noexcept
379 {
380 return threadPoolAffinity_;
381 }
382
386
389 int threadPoolPriority() const noexcept
390 {
391 return threadPoolPriority_;
392 }
393
397
400 int threadPoolPolicy() const noexcept
401 {
402 return threadPoolPolicy_;
403 }
404
408
413 bool tcpNoDelayOption() const noexcept
414 {
415 return tcpNoDelayOption_;
416 }
417
421
426 unsigned threadPoolSize() const noexcept
427 {
428 return threadPoolSize_;
429 }
430
433 SessionSettings& threadPoolSize(unsigned numberOfThreads);
434
439 unsigned short keepAliveInterval() const noexcept
440 {
441 return keepAliveInterval_;
442 }
443
449 SessionSettings& keepAliveInterval(unsigned short seconds);
450
458 {
459 return reportNewMessagesWhileWaitingForMissedMessages_;
460 }
461
467
471
474 PortRange localPortRange() const noexcept
475 {
476 return localPortRange_;
477 }
478
484
488 {
489 return messagingSchemaVersion_;
490 }
491
496 bool useSpinLock() const noexcept
497 {
498 return useSpinLock_;
499 }
500
504
509 bool enableRxTimestamp() const noexcept
510 {
511 return enableRxTimestamp_;
512 }
513
518
523 bool useTLS() const noexcept
524 {
525 return useTLS_;
526 }
527
531
536 LogLevel::Enum logLevel() const noexcept
537 {
538 return logLevel_;
539 }
540
544
550 {
551 return loggerOptions_;
552 }
553
557
562 SessionSettings& load(const std::string& configFile);
563
566 std::string toString() const;
567
570 {
572 static const unsigned short KeepAliveInterval = 30;
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 bool LocalTimeUsage = false;
583 static const unsigned MessageGrouping = 0;
584 static const int ReasonableTransmissionTime = 20;
585 static const int ReconnectAttempts = 3;
586 static const int ReconnectInterval = 180;
587 static const unsigned long long FileBasedStorageSegmentSize = 0;
588 static const bool IgnoreFileBasedStorageIntegrityErrors = false;
589 static const int ThreadPoolSize = 0;
591 static const unsigned AsyncFileBasedStorageQueueMaxSize = UINT_MAX;
592 static const bool UseSpinLock = false;
593 static const bool EnableRxTimestamp = false;
594 static const bool UseTLS = false;
597 };
598
601 {
602 static const char * UserId;
603 static const char * ClientId;
604 static const char * RawData;
607 static const char * ThreadingModel;
608 static const char * TcpNoDelayOption;
609 static const char * MessageGrouping;
610 static const char * FileBasedStorageSegmentSize;
612 static const char * KeepAliveInterval;
613 static const char * LicenseStore;
615 static const char * LocalNetworkInterface;
616 static const char * LocalTimeUsage;
617 static const char * LogBeforeSending;
618 static const char * ReasonableTransmissionTime;
619 static const char * ReceiveSpinningTimeout;
620 static const char * ReconnectAttempts;
621 static const char * ReconnectInterval;
622 static const char * SendSpinningTimeout;
623 static const char * ThreadPoolAffinity;
624 static const char * ThreadPoolSize;
625 static const char * ThreadPoolPriority;
626 static const char * ThreadPoolPolicy;
627 static const char * SocketReceiveBufferSize;
628 static const char * SocketSendBufferSize;
629 static const char * StorageDirectory;
631 static const char * MessagingSchemaVersion;
632 static const char * LocalPortRange;
633 static const char * UseSpinLock;
634 static const char * EnableRxTimestamp;
635 static const char * UseTLS;
636 static const char * LogSeverity;
637 static const char * LoggerOptions;
638 };
639
640private:
641 void processLicenseStores(const std::string& licenseStore);
642
643 unsigned asyncFileBasedStorageQueueMaxSize_;
644
645 CpuIndexes asyncFileBasedStorageThreadAffinity_;
646
647 Messaging::UInt64 fileBasedStorageSegmentSize_;
648
649 Messaging::Int32 clientId_;
650
651 bool ignoreFileBasedStorageIntegrityErrors_;
652
653 unsigned short keepAliveInterval_;
654
655 unsigned licenseAlertingDaysBeforeExpiration_;
656
657 LicenseStores licenseStores_;
658
659 std::string localNetworkInterface_;
660
661 bool localTimeUsage_;
662
663 bool logBeforeSending_;
664
665 unsigned messageGrouping_;
666
667 unsigned reasonableTransmissionTime_;
668
669 int receiveSpinningTimeout_;
670
671 unsigned reconnectAttempts_;
672
673 unsigned reconnectInterval_;
674
675 bool reportNewMessagesWhileWaitingForMissedMessages_;
676
677 std::string rawData_;
678
679 int sendSpinningTimeout_;
680
681 std::string userId_;
682
683 int socketReceiveBufferSize_;
684
685 int socketSendBufferSize_;
686
687 std::string storageDirectory_;
688
689 bool tcpNoDelayOption_;
690
691 ThreadingModel::Enum threadingModel_;
692
693 CpuIndexes threadPoolAffinity_;
694
695 int threadPoolPolicy_;
696
697 int threadPoolPriority_;
698
699 unsigned threadPoolSize_;
700
701 std::pair<Port, Port> localPortRange_;
702
703 Messaging::SchemaVersion messagingSchemaVersion_;
704
705 bool useSpinLock_;
706
707 bool enableRxTimestamp_;
708
709 bool useTLS_;
710
711 LogLevel::Enum logLevel_;
712
713 LogSettings::Enum loggerOptions_;
714};
715
#define ONIXS_ICEBOE_NAMESPACE_BEGIN
Definition ABI.h:94
#define ONIXS_ICEBOE_NAMESPACE_END
Definition ABI.h:98
#define ONIXS_ICEBOE_EXPORTED
Definition Compiler.h:155
#define ONIXS_ICEBOE_NODISCARD
Definition Compiler.h:156
int socketSendBufferSize() const noexcept
LogLevel::Enum logLevel() const noexcept
The default value is LogLevel::Info.
unsigned messageGrouping() const noexcept
SessionSettings & threadPoolSize(unsigned numberOfThreads)
Sets the size of the shared thread pool.
Messaging::Int32 clientId() const noexcept
const std::string & userId() const noexcept
unsigned licenseAlertingDaysBeforeExpiration() const noexcept
SessionSettings & resetToDefaults()
Resets the settings to the default values.
const CpuIndexes & asyncFileBasedStorageThreadAffinity() 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.
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.
std::string toString() const
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 & 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 & useTLS(bool value)
Sets the value of the option to enable TLS.
unsigned threadPoolSize() const noexcept
unsigned short keepAliveInterval() const noexcept
SessionSettings & messageGrouping(unsigned value)
Sets the message grouping mode.
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.
int threadPoolPolicy() const noexcept
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 & 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.
SessionSettings & logLevel(LogLevel::Enum value)
Sets the severity level of log messages.
SessionSettings & keepAliveInterval(unsigned short seconds)
Sets the longest time in seconds the client system can remain silent before sending a message.
unsigned receiveSpinningTimeout() const noexcept
SessionSettings & reasonableTransmissionTime(unsigned percentage)
Sets the reasonable transmission time - as the percentage from the KeepAliveInterval value.
SessionSettings & userId(const std::string &value)
Sets the session id that was assigned by the exchange.
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
bool tcpNoDelayOption() const noexcept
SessionSettings & storageDirectory(const std::string &value)
Sets the Session Storage directory.
SessionSettings & loggerOptions(LogSettings::Enum value)
Sets the the logger options.
SessionSettings & rawData(const std::string &value)
Sets the secret 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
Messaging::UInt64 fileBasedStorageSegmentSize() const noexcept
SessionSettings & receiveSpinningTimeout(unsigned usecTimeout)
Sets the receive spinning timeout (microseconds).
SessionSettings & addLicenseStore(const std::string &value)
Adds the path to the folder that contains license file(s).
bool logBeforeSending() const noexcept
SessionSettings & tcpNoDelayOption(bool value)
Sets the value of the option to improve latency at the expense of message throughput (the TCP_NODELAY...
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.
const std::string & rawData() const noexcept
SessionSettings & licenseAlertingDaysBeforeExpiration(unsigned days)
Sets the number of days to alert before the license expiration.
PortRange localPortRange() const noexcept
int threadPoolPriority() const noexcept
static const int UseOsDefaultSocketBufferSize
Specifies the usage of the operating system default socket buffer size.
unsigned sendSpinningTimeout() const noexcept
bool localTimeUsage() const noexcept
bool useSpinLock() const noexcept
const std::string & storageDirectory() const noexcept
SessionSettings & clientId(Messaging::Int32 value)
Sets the firm id that was assigned by the exchange.
LogSettings::Enum loggerOptions() const noexcept
std::vector< std::string > LicenseStores
Folders that contain license file(s).
ThreadingModel::Enum threadingModel() const noexcept
unsigned reasonableTransmissionTime() const noexcept
MessageHeader::Version SchemaVersion
SBE-encoded data version type.
std::pair< Port, Port > PortRange
Definition Defines.h:72
std::set< CpuIndex > CpuIndexes
Definition Defines.h:71
@ Info
General informational messages about normal operation.
Definition LogSettings.h:39
@ Default
Default log settings.
Definition LogSettings.h:72
static const bool ReportNewMessagesWhileWaitingForMissedMessages
static const unsigned AsyncFileBasedStorageQueueMaxSize
static const unsigned long long FileBasedStorageSegmentSize
static const LogLevel::Enum LogSeverity
static const unsigned LicenseAlertingDaysBeforeExpiration
static const LogSettings::Enum LoggerOptions
static const unsigned short KeepAliveInterval
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 * UserId
= "UserId"
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 * UseTLS
= "UseTLS"
static const char * ThreadingModel
= "ThreadingModel"
static const char * RawData
= "RawData"
static const char * MessageGrouping
= "MessageGrouping"
static const char * LoggerOptions
= "LoggerOptions"
static const char * LogBeforeSending
= "Log.BeforeSending"
static const char * TcpNoDelayOption
= "TcpNoDelayOption"
static const char * KeepAliveInterval
= "KeepAliveInterval"
static const char * IgnoreFileBasedStorageIntegrityErrors
= "IgnoreFileBasedStorageIntegrityErrors"
static const char * LocalTimeUsage
= "LocalTimeUsage"
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 * ReconnectInterval
= "Reconnect.Interval"
static const char * StorageDirectory
= "Log.Directory"
static const char * MessagingSchemaVersion
= "MessagingSchemaVersion"
static const char * ThreadPoolSize
= "ThreadPool.Size"
static const char * LocalPortRange
= "LocalPortRange"
static const char * ReceiveSpinningTimeout
= "ReceiveSpinningTimeout"
static const char * ClientId
= "ClientId"
static const char * LogSeverity
= "LogSeverity"
@ Dedicated
Each session has a sender thread and a receiving thread.