OnixS C++ CME MDP Conflated TCP Handler 1.3.6
API Documentation
Loading...
Searching...
No Matches
Session Class Reference

Public Member Functions

 Session (const SessionSettings &settings, int marketSegmentId, SessionListener *sessionListener, MDP::MarketDataListener *marketDataListener, SessionStorageType::Enum storageType=SessionStorageType::FileBased, SessionStorage *storage=nullptr, UInt64 uuid=UndefinedUuid, const std::string &customKey="")
 ~Session ()
UInt64 uuid () const
const std::string id () const
int marketSegmentId () const
const std::string customKey () const
Sessionconnect (const std::string &host, Port port)
Sessiondisconnect (const std::string &reason="Terminate")
template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Sessionsend (Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &msg)
template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Sessionsend (Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &&msg)
template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Sessionsend (Messaging::MessageHolders< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs)
template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Sessionsend (std::initializer_list< Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > > list)
std::string remoteHost () const
std::string remoteIpAddress () const
Port remotePort () const
std::pair< Port, PortlocalPortRange () const
SessionlocalPortRange (std::pair< Port, Port > portRange)
std::string localNetworkInterface () const
SessionlocalNetworkInterface (const std::string &value)
Port localPort () const
bool tcpNoDelayOption () const
SessiontcpNoDelayOption (bool value)
const SocketOptionssocketOptions () const
SessionsocketOptions (const SocketOptions &options)
SessionreceivingThreadAffinity (CpuIndex cpuIndex)
SessionreceivingThreadAffinity (const CpuIndexes &cpuIndexes)
const CpuIndexesreceivingThreadAffinity () const
SessionsendingThreadAffinity (CpuIndex cpuIndex)
SessionsendingThreadAffinity (const CpuIndexes &cpuIndexes)
const CpuIndexessendingThreadAffinity () const
int receivingThreadPriority () const
SessionreceivingThreadPriority (int priority)
int sendingThreadPriority () const
SessionsendingThreadPriority (int priority)
int receivingThreadPolicy () const
SessionreceivingThreadPolicy (int policy)
int sendingThreadPolicy () const
SessionsendingThreadPolicy (int policy)
unsigned receiveSpinningTimeout () const
SessionreceiveSpinningTimeout (unsigned timeoutInUs)
unsigned sendSpinningTimeout () const
SessionsendSpinningTimeout (unsigned timeoutInUs)
bool reportNewMessagesWhileWaitingForMissedMessages () const
SessionreportNewMessagesWhileWaitingForMissedMessages (bool value)
bool validateSequenceNumbers () const
SessionvalidateSequenceNumbers (bool validate)
unsigned messageGrouping () const
SessionmessageGrouping (unsigned numberOfMessagesToGroup)
SessionStorageType::Enum storageType () const
const std::string & storageId () const
SeqNumber outSeqNum () const
SessionoutSeqNum (SeqNumber nextOutSeqNum)
SeqNumber inSeqNum () const
SessioninSeqNum (SeqNumber nextExpectedInSeqNum)
SeqNumber previousSeqNo () const
SessionpreviousSeqNo (SeqNumber value)
Messaging::UInt64 previousUuid () const
SessionpreviousUuid (Messaging::UInt64 value)
Sessionreset (bool startOfWeek=false)
SessionStateId::Enum state ()
Messaging::Timestamp creationTime () const
void flushSessionStorage ()
unsigned reconnectAttempts () const
SessionreconnectAttempts (unsigned reconnectAttempts)
unsigned reconnectInterval () const
SessionreconnectInterval (unsigned seconds)
bool localTimeUsage () const
SessionlocalTimeUsage (bool useLocalTime)
const std::string & storageDirectory () const
bool logBeforeSending () const
SessionlogBeforeSending (bool value)
size_t incomingMessageGapQueueMaximumSize () const
SessionincomingMessageGapQueueMaximumSize (size_t value)
const Sessionlog (const std::string &message) const
std::string toString () const

Static Public Attributes

static const UInt64 UndefinedUuid = 0
static const int UndefinedAffinity = -1

Detailed Description

Definition at line 38 of file Session.h.

Constructor & Destructor Documentation

◆ Session()

Session ( const SessionSettings & settings,
int marketSegmentId,
SessionListener * sessionListener,
MDP::MarketDataListener * marketDataListener,
SessionStorageType::Enum storageType = SessionStorageType::FileBased,
SessionStorage * storage = nullptr,
UInt64 uuid = UndefinedUuid,
const std::string & customKey = "" )

Constructor.

Parameters
settingsSession settings.
marketSegmentIdMarket segment ID.
sessionListenerSession listener.
marketDataListenerMarket Data listener.
storageTypeSession storage type.
storageSession storage.
uuidUniversally Unique Identifier (UUID).
customKeyCustom key that could be used to distinguish sessions with the same UUID, Session ID, FirmId, and Market Segment ID values.

◆ ~Session()

~Session ( )

Member Function Documentation

◆ connect()

Session & connect ( const std::string & host,
Port port )

Establishes the connection.

Parameters
hostMarket Segment Gateway host.
portMarket Segment Gateway port.
Returns
This session.

◆ creationTime()

Messaging::Timestamp creationTime ( ) const
Returns
the time when the session was created or the last reset operation was performed.

◆ customKey()

const std::string customKey ( ) const
Returns
Custom key that could be used to distinguish sessions with the same UUID, Session ID, FirmId, and Market Segment ID values.

◆ disconnect()

Session & disconnect ( const std::string & reason = "Terminate")

Terminates the connection.

Parameters
reasonTerminate reason details.
Note
Method blocks until the Terminate message is received in reply, or the timeout is elapsed.
Returns
This session.

◆ flushSessionStorage()

void flushSessionStorage ( )

Flushes all internal buffers of the session storage.

◆ id()

const std::string id ( ) const
Returns
Session ID (assigned by the exchange).

◆ incomingMessageGapQueueMaximumSize() [1/2]

size_t incomingMessageGapQueueMaximumSize ( ) const

◆ incomingMessageGapQueueMaximumSize() [2/2]

Session & incomingMessageGapQueueMaximumSize ( size_t value)

◆ inSeqNum() [1/2]

SeqNumber inSeqNum ( ) const
Returns
the expected sequence number of the next inbound message.

◆ inSeqNum() [2/2]

Session & inSeqNum ( SeqNumber nextExpectedInSeqNum)

Sets the expected sequence number of the next inbound message.

◆ localNetworkInterface() [1/2]

std::string localNetworkInterface ( ) const
Returns
the IP Address or name of the local network interface.

◆ localNetworkInterface() [2/2]

Session & localNetworkInterface ( const std::string & value)

Sets the IP Address or name of the local network interface.

◆ localPort()

Port localPort ( ) const
Returns
the local network port number.

◆ localPortRange() [1/2]

std::pair< Port, Port > localPortRange ( ) const

◆ localPortRange() [2/2]

Session & localPortRange ( std::pair< Port, Port > portRange)

◆ localTimeUsage() [1/2]

bool localTimeUsage ( ) const
Returns
the usage of local time in Handler events and logs files.

◆ localTimeUsage() [2/2]

Session & localTimeUsage ( bool useLocalTime)

Specifies the usage of local time in Handler events and logs files.

◆ log()

const Session & log ( const std::string & message) const

Write the given user's message to the Handler's log file using the session formatted Id.

◆ logBeforeSending() [1/2]

bool logBeforeSending ( ) const
Returns
true if logging of an outgoing message to the session storage is performed before sending it to the wire, otherwise - false.

◆ logBeforeSending() [2/2]

Session & logBeforeSending ( bool value)

Sets the option to log an outgoing message to the session storage before sending it to the wire.

◆ marketSegmentId()

int marketSegmentId ( ) const
Returns
Market Segment ID.

◆ messageGrouping() [1/2]

unsigned messageGrouping ( ) const
Returns
the number of messages to be sent together.

◆ messageGrouping() [2/2]

Session & messageGrouping ( unsigned numberOfMessagesToGroup)

Sets the number of messages to be sent together.

Parameters
numberOfMessagesToGroupIf the parameter is zero (by default) or one, the Handler tries to send an outgoing application-level message in the context of the thread that calls the OnixS::CME::ConflatedTCP::Session::send method. If the message cannot be sent immediately, it is stored in the queue for the subsequent sending by the sending thread. If this parameter is larger than one, the Handler stores outgoing SBE messages in the queue for the subsequent sending by the sending thread.
Returns
This session.

◆ outSeqNum() [1/2]

SeqNumber outSeqNum ( ) const
Returns
the sequence number of the next outgoing message.

◆ outSeqNum() [2/2]

Session & outSeqNum ( SeqNumber nextOutSeqNum)

Sets the sequence number of the next outgoing message.

◆ previousSeqNo() [1/2]

SeqNumber previousSeqNo ( ) const
Returns
the sequence number of the last business message published by CME with the PreviousUUID.

If no business message was published, the value is zero.

◆ previousSeqNo() [2/2]

Session & previousSeqNo ( SeqNumber value)

Sets the sequence number of the last business message published by CME with the PreviousUUID.

◆ previousUuid() [1/2]

Messaging::UInt64 previousUuid ( ) const
Returns
The UUID from the previously Established session.
  • This can be the CME assigned default UUID=0 for messages published by CME before first Negotiation of customer at the beginning of the week.
  • This can be the last UUID as used by the customer from the previously Established session.

◆ previousUuid() [2/2]

Session & previousUuid ( Messaging::UInt64 value)

Sets the UUID from the previously Established session.

◆ receiveSpinningTimeout() [1/2]

unsigned receiveSpinningTimeout ( ) const
Returns
the receive spinning timeout value (in microseconds).

◆ receiveSpinningTimeout() [2/2]

Session & receiveSpinningTimeout ( unsigned timeoutInUs)

Sets the receive spinning timeout value (in microseconds).

◆ receivingThreadAffinity() [1/3]

const CpuIndexes & receivingThreadAffinity ( ) const

Sets the receiving thread CPU affinity.

◆ receivingThreadAffinity() [2/3]

Session & receivingThreadAffinity ( const CpuIndexes & cpuIndexes)
Returns
the receiving thread CPU affinity.

◆ receivingThreadAffinity() [3/3]

Session & receivingThreadAffinity ( CpuIndex cpuIndex)

Sets the receiving thread CPU affinity.

◆ receivingThreadPolicy() [1/2]

int receivingThreadPolicy ( ) const
Returns
the receiving thread policy.

◆ receivingThreadPolicy() [2/2]

Session & receivingThreadPolicy ( int policy)

Sets the receiving thread policy.

◆ receivingThreadPriority() [1/2]

int receivingThreadPriority ( ) const
Returns
the scheduling priority of the receiving thread.

◆ receivingThreadPriority() [2/2]

Session & receivingThreadPriority ( int priority)

Sets the scheduling priority of the receiving thread.

◆ reconnectAttempts() [1/2]

unsigned reconnectAttempts ( ) const
Returns
the maximum number of tries to restore the telecommunications link.

◆ reconnectAttempts() [2/2]

Session & reconnectAttempts ( unsigned reconnectAttempts)

Sets the maximum number of tries to restore the telecommunications link.

◆ reconnectInterval() [1/2]

unsigned reconnectInterval ( ) const
Returns
the time interval between retries to restore the telecommunications link (seconds).

◆ reconnectInterval() [2/2]

Session & reconnectInterval ( unsigned seconds)

Sets the time interval between retries to restore the telecommunications link (seconds).

◆ remoteHost()

std::string remoteHost ( ) const
Returns
the host name the session is connected to.

◆ remoteIpAddress()

std::string remoteIpAddress ( ) const
Returns
the IP address the session is connected to.

◆ remotePort()

Port remotePort ( ) const
Returns
the port number the session is connected to.

◆ reportNewMessagesWhileWaitingForMissedMessages() [1/2]

bool reportNewMessagesWhileWaitingForMissedMessages ( ) const
Returns
true if new messages are reported even when the message gap is detected, and the reply on the Retransmit Request message is expected, otherwise - false.

◆ reportNewMessagesWhileWaitingForMissedMessages() [2/2]

Session & reportNewMessagesWhileWaitingForMissedMessages ( bool value)

Sets the option to report new messages even when the message gap is detected, and the reply on the Retransmit Request message is expected.

◆ reset()

Session & reset ( bool startOfWeek = false)

Backups the current log files, resets the sequence numbers to 1 and generates a new UUID.

Warning
Can be called only when the session is disconnected.
Parameters
startOfWeekif true then the PreviousUUID and PreviousSeqNum are reset to 0.
Returns
This session.

◆ send() [1/4]

template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Session & send ( Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > && msg)

Sends the message.

Note
This call is thread-safe.
Returns
This session.

Definition at line 392 of file Session.h.

◆ send() [2/4]

template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Session & send ( Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > & msg)

Sends the message.

Note
This call is thread-safe.
Returns
This session.

Definition at line 380 of file Session.h.

◆ send() [3/4]

template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Session & send ( Messaging::MessageHolders< SbeMessageType, MaxMessageSize, MessageInitializer > & msgs)

Sends messages.

Note
This call is thread-safe.
Returns
This session.

Definition at line 404 of file Session.h.

◆ send() [4/4]

template<typename SbeMessageType, size_t MaxMessageSize, typename MessageInitializer>
Session & send ( std::initializer_list< Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > > list)

Sends messages.

Note
This call is thread-safe.
Returns
This session.

Definition at line 427 of file Session.h.

◆ sendingThreadAffinity() [1/3]

const CpuIndexes & sendingThreadAffinity ( ) const
Returns
the auxiliary sending thread CPU affinity.

◆ sendingThreadAffinity() [2/3]

Session & sendingThreadAffinity ( const CpuIndexes & cpuIndexes)

Sets the sending thread CPU affinity.

◆ sendingThreadAffinity() [3/3]

Session & sendingThreadAffinity ( CpuIndex cpuIndex)

Sets the sending thread CPU affinity.

◆ sendingThreadPolicy() [1/2]

int sendingThreadPolicy ( ) const

Sets the sending thread policy.

◆ sendingThreadPolicy() [2/2]

Session & sendingThreadPolicy ( int policy)
Returns
the sending thread policy.

◆ sendingThreadPriority() [1/2]

int sendingThreadPriority ( ) const
Returns
the scheduling priority of the sending thread.

◆ sendingThreadPriority() [2/2]

Session & sendingThreadPriority ( int priority)
Returns
the scheduling priority of the sending thread.

◆ sendSpinningTimeout() [1/2]

unsigned sendSpinningTimeout ( ) const
Returns
the send spinning timeout value (in microseconds).

◆ sendSpinningTimeout() [2/2]

Session & sendSpinningTimeout ( unsigned timeoutInUs)

Sets the send spinning timeout value (in microseconds).

◆ socketOptions() [1/2]

const SocketOptions & socketOptions ( ) const
Returns
Socket options.

◆ socketOptions() [2/2]

Session & socketOptions ( const SocketOptions & options)

Sets socket options.

◆ state()

Returns
Session's current state.

◆ storageDirectory()

const std::string & storageDirectory ( ) const
Returns
The session storage directory.

◆ storageId()

const std::string & storageId ( ) const
Returns
Session storage ID.

◆ storageType()

SessionStorageType::Enum storageType ( ) const
Returns
Session storage type.

◆ tcpNoDelayOption() [1/2]

bool tcpNoDelayOption ( ) const
Returns
the value of the TCP_NODELAY option (improve latency at the expense of message throughput).

◆ tcpNoDelayOption() [2/2]

Session & tcpNoDelayOption ( bool value)

Sets the TCP_NODELAY option (improve latency at the expense of message throughput).

◆ toString()

std::string toString ( ) const
Returns
the human-friendly description.

◆ uuid()

UInt64 uuid ( ) const
Returns
the Universally Unique Identifier (UUID).

◆ validateSequenceNumbers() [1/2]

bool validateSequenceNumbers ( ) const
Returns
true if incoming message sequence numbers are validated, otherwise - false.

◆ validateSequenceNumbers() [2/2]

Session & validateSequenceNumbers ( bool validate)

Turns on/off the validation of incoming message sequence numbers.

Member Data Documentation

◆ UndefinedAffinity

const int UndefinedAffinity = -1
static

Definition at line 182 of file Session.h.

◆ UndefinedUuid

const UInt64 UndefinedUuid = 0
static

Definition at line 41 of file Session.h.