49 static const UInt64 UndefinedUuid = 0;
76 std::
string id() const;
82 std::
string customKey() const;
85 bool negotiated() const;
90 Session& negotiated(
bool negotiated);
93 Messaging::
FTI::Enum faultToleranceIndicator() const;
96 Session& faultToleranceIndicator(Messaging::
FTI::Enum value);
114 Threading::SharedFuture<
void> connectAsync(const
std::
string & host,
Port port);
125 Session& disconnect(const
std::
string &reason = "");
132 Threading::SharedFuture<
void> disconnectAsync(const
std::
string & reason = "");
144 template <typename SbeMessageType,
size_t MaxMessageSize, typename MessageInitializer>
146 Messaging::
MessageHolder<SbeMessageType, MaxMessageSize, MessageInitializer> &msg,
149 #if defined (ONIXS_ILINK3_CXX11) 160 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
168 static const size_t CmeMaxPacketSize = 1420;
170 #if defined (ONIXS_ILINK3_CXX11) 187 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
191 size_t maxPacketSize = CmeMaxPacketSize);
211 size_t maxPacketSize = CmeMaxPacketSize);
239 template <
typename SbeMessageType,
size_t MaxMessageSize>
243 int warmupFlags = 0);
246 #if defined (ONIXS_ILINK3_CXX11) 263 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
267 size_t maxPacketSize = CmeMaxPacketSize,
268 int warmupFlags = 0);
287 size_t maxPacketSize = CmeMaxPacketSize,
int warmupFlags = 0);
307 Session & throttlingLimit(
size_t messagesCount,
size_t intervalInMs = 1000);
310 std::string remoteHost()
const;
313 std::string remoteIpAddress()
const;
316 Port remotePort()
const;
319 std::pair<Port, Port> localPortRange() const ONIXS_ILINK3_NOTHROW;
325 std::
string localNetworkInterface() const;
328 Session& localNetworkInterface(const
std::
string &value);
331 Port localPort() const;
334 bool tcpNoDelayOption() const;
337 Session& tcpNoDelayOption(
bool value);
345 static const
int UndefinedAffinity = -1;
354 const
CpuIndexes &receivingThreadAffinity() const;
363 const
CpuIndexes &sendingThreadAffinity() const;
366 int receivingThreadPriority() const;
369 Session& receivingThreadPriority(
int priority);
372 int sendingThreadPriority() const;
375 Session& sendingThreadPriority(
int priority);
378 int receivingThreadPolicy() const;
381 Session& receivingThreadPolicy(
int policy);
384 int sendingThreadPolicy() const;
387 Session& sendingThreadPolicy(
int policy);
390 unsigned receiveSpinningTimeout() const ONIXS_ILINK3_NOTHROW;
393 Session& receiveSpinningTimeout(
unsigned timeoutInUs);
396 unsigned sendSpinningTimeout() const ONIXS_ILINK3_NOTHROW;
399 Session& sendSpinningTimeout(
unsigned timeoutInUs);
404 bool reportNewMessagesWhileWaitingForMissedMessages() const;
409 Session& reportNewMessagesWhileWaitingForMissedMessages(
bool value);
412 unsigned messageGrouping() const ONIXS_ILINK3_NOTHROW;
424 Session& messageGrouping(
unsigned numberOfMessagesToGroup);
430 const
std::
string &storageId() const ONIXS_ILINK3_NOTHROW;
433 SeqNumber outSeqNum() const ONIXS_ILINK3_NOTHROW;
449 SeqNumber previousSeqNo() const ONIXS_ILINK3_NOTHROW;
460 Messaging::
UInt64 previousUuid() const ONIXS_ILINK3_NOTHROW;
474 Session& reset(
bool startOfWeek = false);
480 Messaging::
Timestamp creationTime() const ONIXS_ILINK3_NOTHROW;
483 void flushSessionStorage();
486 unsigned reconnectAttempts() const;
489 Session& reconnectAttempts(
unsigned reconnectAttempts);
492 unsigned reconnectInterval() const;
495 Session& reconnectInterval(
unsigned seconds);
498 bool localTimeUsage() const;
501 Session& localTimeUsage(
bool useLocalTime);
504 const
std::
string &storageDirectory() const;
507 bool logBeforeSending() const;
510 Session& logBeforeSending(
bool value);
513 size_t incomingMessageGapQueueMaximumSize() const;
516 Session& incomingMessageGapQueueMaximumSize(
size_t value);
519 const
Session& log(const
std::
string &message) const;
522 std::
string toString() const;
525 Messaging::
Timestamp licenseExpirationDate() const;
528 Messaging::
SchemaVersion messagingVersion() const ONIXS_ILINK3_NOTHROW;
531 bool detectMessageGapForPreviousUuid() const;
534 Session& detectMessageGapForPreviousUuid(
bool detectGap);
545 size_t outboundQueueBytes();
548 static const
std::
string& version() ONIXS_ILINK3_NOTHROW;
552 Session& operator=(const Session& );
559 template <typename SbeMessageType,
size_t MaxMessageSize, typename MessageInitializer>
560 void validate(const Messaging::
MessageHolder<SbeMessageType, MaxMessageSize, MessageInitializer> &msg) const;
562 void validateVersion(Messaging::
SchemaVersion version) const;
605 static const int marketSegmentId_ = INT_MAX;
608 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
623 template <
typename SbeMessageType,
size_t MaxMessageSize>
635 #if defined (ONIXS_ILINK3_CXX11) 637 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
649 #if defined (ONIXS_ILINK3_CXX11) 651 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
656 size_t maxPacketSize)
660 send(msgs.netMsgs_, maxPacketSize, ts);
664 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
672 warmUp(msgs.netMsgs_, maxPacketSize, flags, ts);
678 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
682 validateVersion(holder->version());
#define ONIXS_ILINK3_NULLPTR
std::vector< NetworkMessage > NetMessages
Contains the SimpleOpenFramingHeader, the SBE message, and the data buffer.
Session's network stack reactor interface.
Session & send(Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &msg, Messaging::Timestamp sendingTime=UtcWatch::now())
Sends the message.
Messaging::UInt32 SeqNumber
void validate(const Message &)
MessageHeader::Version SchemaVersion
SBE-encoded data version type.
std::set< CpuIndex > CpuIndexes
An iLink 3 Session for CME Convenience Gateways (CGW).
A network iLink3 message.
int Handle
Type alias for socket handle.
File-based Session Storage.
#define ONIXS_ILINK3_EXPORTED
Session & warmUp(Messaging::MessageHolder< SbeMessageType, MaxMessageSize > &msg, Messaging::Timestamp sendingTime=UtcWatch::now(), int warmupFlags=0)
Warms up the sending path.
The class can be used to combine messages with different types to the batch for sending.
std::vector< SocketOption > SocketOptions
Socket options.
The message batch wrapper.
#define ONIXS_ILINK3_HOTPATH
The time point without the time-zone information.
#define ONIXS_ILINK3_NOTHROW
NetworkMessage toNetworkMessage() noexcept