50 static const UInt64 UndefinedUuid = 0;
77 std::
string id() const;
83 std::
string customKey() const;
86 bool negotiated() const;
91 Session& negotiated(
bool negotiated);
94 Messaging::
FTI::Enum faultToleranceIndicator() const;
97 Session& faultToleranceIndicator(Messaging::
FTI::Enum value);
115 Threading::SharedFuture<
void> connectAsync(const
std::
string & host,
Port port);
126 Session& disconnect(const
std::
string &reason = "");
133 Threading::SharedFuture<
void> disconnectAsync(const
std::
string & reason = "");
145 template <typename SbeMessageType,
size_t MaxMessageSize, typename MessageInitializer>
147 Messaging::
MessageHolder<SbeMessageType, MaxMessageSize, MessageInitializer> &msg,
150 #if defined (ONIXS_ILINK3_CXX11) 161 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
169 static const size_t CmeMaxPacketSize = 1420;
171 #if defined (ONIXS_ILINK3_CXX11) 188 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
192 size_t maxPacketSize = CmeMaxPacketSize);
212 size_t maxPacketSize = CmeMaxPacketSize);
240 template <
typename SbeMessageType,
size_t MaxMessageSize>
244 int warmupFlags = 0);
247 #if defined (ONIXS_ILINK3_CXX11) 264 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
268 size_t maxPacketSize = CmeMaxPacketSize,
269 int warmupFlags = 0);
288 size_t maxPacketSize = CmeMaxPacketSize,
int warmupFlags = 0);
305 size_t tryThrottle();
315 Session & throttlingLimit(
size_t messagesCount,
size_t intervalInMs = 1000);
318 std::string remoteHost()
const;
321 std::string remoteIpAddress()
const;
324 Port remotePort()
const;
327 std::pair<Port, Port> localPortRange() const ONIXS_ILINK3_NOTHROW;
333 std::
string localNetworkInterface() const;
336 Session& localNetworkInterface(const
std::
string &value);
339 Port localPort() const;
342 bool tcpNoDelayOption() const;
345 Session& tcpNoDelayOption(
bool value);
353 static const
int UndefinedAffinity = -1;
362 const
CpuIndexes &receivingThreadAffinity() const;
371 const
CpuIndexes &sendingThreadAffinity() const;
374 int receivingThreadPriority() const;
377 Session& receivingThreadPriority(
int priority);
380 int sendingThreadPriority() const;
383 Session& sendingThreadPriority(
int priority);
386 int receivingThreadPolicy() const;
389 Session& receivingThreadPolicy(
int policy);
392 int sendingThreadPolicy() const;
395 Session& sendingThreadPolicy(
int policy);
398 unsigned receiveSpinningTimeout() const ONIXS_ILINK3_NOTHROW;
401 Session& receiveSpinningTimeout(
unsigned timeoutInUs);
404 unsigned sendSpinningTimeout() const ONIXS_ILINK3_NOTHROW;
407 Session& sendSpinningTimeout(
unsigned timeoutInUs);
412 bool reportNewMessagesWhileWaitingForMissedMessages() const;
417 Session& reportNewMessagesWhileWaitingForMissedMessages(
bool value);
420 unsigned messageGrouping() const ONIXS_ILINK3_NOTHROW;
432 Session& messageGrouping(
unsigned numberOfMessagesToGroup);
438 const
std::
string &storageId() const ONIXS_ILINK3_NOTHROW;
441 SeqNumber outSeqNum() const ONIXS_ILINK3_NOTHROW;
457 SeqNumber previousSeqNo() const ONIXS_ILINK3_NOTHROW;
468 Messaging::
UInt64 previousUuid() const ONIXS_ILINK3_NOTHROW;
482 Session& reset(
bool startOfWeek = false);
488 Messaging::
Timestamp creationTime() const ONIXS_ILINK3_NOTHROW;
491 void flushSessionStorage();
494 unsigned reconnectAttempts() const;
497 Session& reconnectAttempts(
unsigned reconnectAttempts);
500 unsigned reconnectInterval() const;
503 Session& reconnectInterval(
unsigned seconds);
506 bool localTimeUsage() const;
509 Session& localTimeUsage(
bool useLocalTime);
512 const
std::
string &storageDirectory() const;
515 bool logBeforeSending() const;
518 Session& logBeforeSending(
bool value);
521 size_t incomingMessageGapQueueMaximumSize() const;
524 Session& incomingMessageGapQueueMaximumSize(
size_t value);
527 const
Session& log(const
std::
string &message) const;
530 std::
string toString() const;
533 Messaging::
Timestamp licenseExpirationDate() const;
536 Messaging::
SchemaVersion messagingVersion() const ONIXS_ILINK3_NOTHROW;
539 bool detectMessageGapForPreviousUuid() const;
542 Session& detectMessageGapForPreviousUuid(
bool detectGap);
553 size_t outboundQueueBytes();
563 static const
std::
string& version() ONIXS_ILINK3_NOTHROW;
567 Session& operator=(const Session& );
574 template <typename SbeMessageType,
size_t MaxMessageSize, typename MessageInitializer>
575 void validate(const Messaging::
MessageHolder<SbeMessageType, MaxMessageSize, MessageInitializer> &msg) const;
577 void validateVersion(Messaging::
SchemaVersion version) const;
620 static const int marketSegmentId_ = INT_MAX;
623 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
638 template <
typename SbeMessageType,
size_t MaxMessageSize>
650 #if defined (ONIXS_ILINK3_CXX11) 652 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
664 #if defined (ONIXS_ILINK3_CXX11) 666 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
671 size_t maxPacketSize)
675 send(msgs.netMsgs_, maxPacketSize, ts);
679 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
687 warmUp(msgs.netMsgs_, maxPacketSize, flags, ts);
693 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
697 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