OnixS C++ B3 BOE Binary Order Entry  1.2.0
API Documentation
Session Class Reference

#include <OnixS/B3/BOE/Session.h>

Public Member Functions

 Session (const SessionSettings &settings, SessionListener *listener, SessionStorageType::Enum storageType=SessionStorageType::FileBased, SessionStorage *storage=nullptr, UInt64 sessionVerId=UndefinedSessionVerID, const std::string &customKey="")
 
 Session (SessionReactor &stack, const SessionSettings &settings, SessionListener *listener, SessionStorageType::Enum storageType=SessionStorageType::FileBased, SessionStorage *storage=nullptr, UInt64 sessionVerId=UndefinedSessionVerID, const std::string &customKey="")
 
 ~Session ()
 
UInt64 sessionVerId () const noexcept
 
std::string id () const
 
Messaging::SessionID sessionId () const noexcept
 
std::string customKey () const
 
bool negotiated () const
 
Sessionnegotiated (bool negotiated)
 
Sessionconnect (const std::string &host, Port port)
 
Threading::SharedFuture< void > connectAsync (const std::string &host, Port port)
 
Sessiondisconnect ()
 
Threading::SharedFuture< void > disconnectAsync ()
 
template<typename SbeMessageType , size_t MaxMessageSize, typename MessageInitializer >
Sessionsend (Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &msg, Messaging::Timestamp sendingTime=UtcWatch::now())
 
template<typename SbeMessageType , size_t MaxMessageSize, typename MessageInitializer >
Sessionsend (Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &&msg, Messaging::Timestamp sendingTime=UtcWatch::now())
 
template<typename SbeMessageType , size_t MaxMessageSize, typename MessageInitializer >
Sessionsend (MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs, Messaging::Timestamp sendingTime=UtcWatch::now(), size_t maxPacketSize=B3BOEMaxPacketSize)
 
Sessionsend (MessageBatchCombiner &msgs, Messaging::Timestamp sendingTime=UtcWatch::now(), size_t maxPacketSize=B3BOEMaxPacketSize)
 
SessionsendSequenceMessage ()
 
template<typename SbeMessageType , size_t MaxMessageSize>
SessionwarmUp (Messaging::MessageHolder< SbeMessageType, MaxMessageSize > &msg, Messaging::Timestamp sendingTime=UtcWatch::now(), int warmupFlags=0)
 
template<typename SbeMessageType , size_t MaxMessageSize, typename MessageInitializer >
SessionwarmUp (MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs, Messaging::Timestamp sendingTime=UtcWatch::now(), size_t maxPacketSize=B3BOEMaxPacketSize, int warmupFlags=0)
 
SessionwarmUp (MessageBatchCombiner &msgs, Messaging::Timestamp sendingTime=UtcWatch::now(), size_t maxPacketSize=B3BOEMaxPacketSize, int warmupFlags=0)
 
Sessionthrottle ()
 
size_t tryThrottle ()
 
SessionthrottlingLimit (size_t messagesCount, size_t intervalInMs=1000)
 
std::string remoteHost () const
 
std::string remoteIpAddress () const
 
Port remotePort () const
 
std::pair< Port, PortlocalPortRange () const noexcept
 
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 noexcept
 
SessionreceiveSpinningTimeout (unsigned timeoutInUs)
 
unsigned sendSpinningTimeout () const noexcept
 
SessionsendSpinningTimeout (unsigned timeoutInUs)
 
bool reportNewMessagesWhileWaitingForMissedMessages () const
 
SessionreportNewMessagesWhileWaitingForMissedMessages (bool value)
 
unsigned messageGrouping () const noexcept
 
SessionmessageGrouping (unsigned numberOfMessagesToGroup)
 
SessionStorageType::Enum storageType () const noexcept
 
const std::string & storageId () const noexcept
 
SeqNumber outSeqNum () const noexcept
 
SessionoutSeqNum (SeqNumber nextOutSeqNum)
 
SeqNumber inSeqNum () const
 
SessioninSeqNum (SeqNumber nextExpectedInSeqNum)
 
Sessionreset ()
 
SessionStateId::Enum state () const
 
Messaging::Timestamp creationTime () const noexcept
 
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
 
Messaging::Timestamp licenseExpirationDate () const
 
Messaging::SchemaVersion messagingVersion () const noexcept
 
Handle socketHandle ()
 
size_t outboundQueueBytes ()
 
bool getTcpInfo (TcpInfo &)
 

Static Public Member Functions

static const std::string & version () noexcept
 

Static Public Attributes

static const UInt64 UndefinedSessionVerID = 0
 
static const size_t B3BOEMaxPacketSize = 1420
 
static const int UndefinedAffinity = -1
 
static const Handle InvalidSocketHandle
 

Friends

struct AdHoc::SessionHelper
 

Detailed Description

Definition at line 47 of file Session.h.

Constructor & Destructor Documentation

Session ( const SessionSettings settings,
SessionListener listener,
SessionStorageType::Enum  storageType = SessionStorageType::FileBased,
SessionStorage storage = nullptr,
UInt64  sessionVerId = UndefinedSessionVerID,
const std::string &  customKey = "" 
)

Constructor.

Parameters
settingsSession settings.
listenerSession listener.
storageTypeSession storage type.
storageSession storage.
sessionVerIdSession Version Identification (sessionVerId).
customKeyCustom key that could be used to distinguish sessions with the same sessionVerId, Session ID, FirmId, and Market Segment ID values.
Session ( SessionReactor stack,
const SessionSettings settings,
SessionListener listener,
SessionStorageType::Enum  storageType = SessionStorageType::FileBased,
SessionStorage storage = nullptr,
UInt64  sessionVerId = UndefinedSessionVerID,
const std::string &  customKey = "" 
)
~Session ( )

Member Function Documentation

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

Establishes the connection.

Parameters
hostMarket Segment Gateway host.
portMarket Segment Gateway port.
Returns
This session.
Threading::SharedFuture<void> connectAsync ( const std::string &  host,
Port  port 
)

Establishes the connection asynchronously.

Parameters
hostMarket Segment Gateway host.
portMarket Segment Gateway port.
Messaging::Timestamp creationTime ( ) const
noexcept
Returns
the time when the session was created or the last reset operation was performed.
std::string customKey ( ) const
Returns
Custom key that could be used to distinguish sessions with the same sessionVerId, Session ID, FirmId, and Market Segment ID values.
Session& disconnect ( )

Terminates the connection.

Note
Method blocks until the Terminate message is received in reply, or the timeout is elapsed.
Returns
This session.
Threading::SharedFuture<void> disconnectAsync ( )

Terminates the connection asynchronously.

void flushSessionStorage ( )

Flushes all internal buffers of the session storage.

bool getTcpInfo ( TcpInfo )

Gets information about the underlying TCP connection.

Returns
true when success; otherwise - false.
Note
Available on Linux only.
Not available for the TcpDirect mode.
std::string id ( ) const
Returns
string presentation for Session ID (assigned by the exchange).
size_t incomingMessageGapQueueMaximumSize ( ) const
Returns
the maximum size of the message queue used during message gap recovery.
Session& incomingMessageGapQueueMaximumSize ( size_t  value)

Sets the maximum size of the message queue used during message gap recovery.

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

Sets the expected sequence number of the next inbound message.

Messaging::Timestamp licenseExpirationDate ( ) const
Returns
the license expiration date.
std::string localNetworkInterface ( ) const
Returns
the IP Address or name of the local network interface.
Session& localNetworkInterface ( const std::string &  value)

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

Port localPort ( ) const
Returns
the local network port number.
std::pair<Port, Port> localPortRange ( ) const
noexcept
Returns
the local port range
Session& localPortRange ( std::pair< Port, Port portRange)

Sets the local port range.

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

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

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.

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.
Session& logBeforeSending ( bool  value)

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

unsigned messageGrouping ( ) const
noexcept
Returns
the number of messages to be sent together.
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::B3::BOE::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.
Messaging::SchemaVersion messagingVersion ( ) const
noexcept
Returns
the version of the message schema.
bool negotiated ( ) const
Returns
true if the session is negotiated (the Negotiation Response message has been received in reply to the Negotiation message); otherwise - false.
Session& negotiated ( bool  negotiated)

Sets the "negotiated" status.

The session is negotiated when the Negotiation Response message has been received in reply to the Negotiation message.

size_t outboundQueueBytes ( )

Returns the total number of bytes in the outbound queue.

SeqNumber outSeqNum ( ) const
noexcept
Returns
the sequence number of the next outgoing message.
Session& outSeqNum ( SeqNumber  nextOutSeqNum)

Sets the sequence number of the next outgoing message.

unsigned receiveSpinningTimeout ( ) const
noexcept
Returns
the receive spinning timeout value (in microseconds).
Session& receiveSpinningTimeout ( unsigned  timeoutInUs)

Sets the receive spinning timeout value (in microseconds).

Session& receivingThreadAffinity ( CpuIndex  cpuIndex)

Sets the receiving thread CPU affinity.

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

Sets the receiving thread CPU affinity.

int receivingThreadPolicy ( ) const
Returns
the receiving thread policy.
Session& receivingThreadPolicy ( int  policy)

Sets the receiving thread policy.

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

Sets the scheduling priority of the receiving thread.

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

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

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

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

std::string remoteHost ( ) const
Returns
the host name the session is connected to.
std::string remoteIpAddress ( ) const
Returns
the IP address the session is connected to.
Port remotePort ( ) const
Returns
the port number the session is connected to.
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.
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.

Session& reset ( )

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

Warning
Can be called only when the session is disconnected.
Returns
This session.
Session & send ( Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &  msg,
Messaging::Timestamp  sendingTime = UtcWatch::now() 
)

Sends the message.

Parameters
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
msgThe message to be sent.
Note
This call is thread-safe, except for the TCPDirect mode.
Returns
This session.

Definition at line 543 of file Session.h.

Session & send ( Messaging::MessageHolder< SbeMessageType, MaxMessageSize, MessageInitializer > &&  msg,
Messaging::Timestamp  sendingTime = UtcWatch::now() 
)

Sends the message.

Parameters
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
msgThe message to be sent.
Note
This call is thread-safe, except for the TCPDirect mode.
Returns
This session.

Definition at line 572 of file Session.h.

Session & send ( Messaging::MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &  msgs,
Messaging::Timestamp  sendingTime = UtcWatch::now(),
size_t  maxPacketSize = B3BOEMaxPacketSize 
)

Sends messages.

Note
This call is thread-safe.
Parameters
msgsMessage batch to send.
maxPacketSizeThe maximum number of bytes written to the socket's send buffer together. This parameter could be used to reduce the probability that the operating system will fragment the message across multiple TCP packets.
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
Note
The maxPacketSize parameter should not be less than any message size in the batch. Otherwise, the method call can produce an error, and the session can close the connection.
Returns
This session.

Definition at line 586 of file Session.h.

Session& send ( MessageBatchCombiner msgs,
Messaging::Timestamp  sendingTime = UtcWatch::now(),
size_t  maxPacketSize = B3BOEMaxPacketSize 
)

Sends messages.

Note
This call is thread-safe.
Parameters
msgsMessage batch combiner to send.
maxPacketSizeThe maximum number of bytes written to the socket's send buffer together. This parameter could be used to reduce the probability that the operating system will fragment the message across multiple TCP packets.
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
Note
The maxPacketSize parameter should not be less than any message size in the batch. Otherwise, the method call can produce an error, and the session can close the connection.
Returns
This session.
Session& sendingThreadAffinity ( CpuIndex  cpuIndex)

Sets the sending thread CPU affinity.

Session& sendingThreadAffinity ( const CpuIndexes cpuIndexes)

Sets the sending thread CPU affinity.

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

Sets the sending thread policy.

Session& sendingThreadPolicy ( int  policy)
Returns
the sending thread policy.
int sendingThreadPriority ( ) const
Returns
the scheduling priority of the sending thread.
Session& sendingThreadPriority ( int  priority)
Returns
the scheduling priority of the sending thread.
Session& sendSequenceMessage ( )

Send the Sequence message.

Note
The session sends Sequence messages automatically per the B3 BOE protocol. This method should be used only if an ad hoc Sequence message is required and the connection is established.
Returns
This session.
unsigned sendSpinningTimeout ( ) const
noexcept
Returns
the send spinning timeout value (in microseconds).
Session& sendSpinningTimeout ( unsigned  timeoutInUs)

Sets the send spinning timeout value (in microseconds).

Messaging::SessionID sessionId ( ) const
noexcept
Returns
Session ID (assigned by the exchange).
UInt64 sessionVerId ( ) const
noexcept
Returns
the Session Version Identification (sessionVerId).
Handle socketHandle ( )

Returns the socket handle which the session uses to transmit data.

Note
The TCPDirect mode does not support this method, so it always returns the InvalidSocketHandle value.
const SocketOptions& socketOptions ( ) const
Returns
Socket options.
Session& socketOptions ( const SocketOptions options)

Sets socket options.

SessionStateId::Enum state ( ) const
Returns
Session's current state.
const std::string& storageDirectory ( ) const
Returns
The session storage directory.
const std::string& storageId ( ) const
noexcept
Returns
Session storage ID.
SessionStorageType::Enum storageType ( ) const
noexcept
Returns
Session storage type.
bool tcpNoDelayOption ( ) const
Returns
the value of the TCP_NODELAY option (improve latency at the expense of message throughput).
Session& tcpNoDelayOption ( bool  value)

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

Session& throttle ( )

Performs the throttling of a session that must be called before each send function call.

If the count of messages per time unit exceeds the throttling limit, the function will be blocked until the given time interval is passed.

Note
This call is thread-safe.
Session& throttlingLimit ( size_t  messagesCount,
size_t  intervalInMs = 1000 
)

Sets throttling limit parameters.

Parameters
messagesCountMessage limit per time unit.
intervalInMsTime interval to limit messages.
Note
This call is thread-safe.
std::string toString ( ) const
Returns
the human-friendly description.
size_t tryThrottle ( )

Checks the throttling of a session that must be called before each send function call.

If the count of messages per time unit exceeds the throttling limit, the function returns the delay (in milliseconds) until the sending becomes possible. Otherwise, it returns 0.

Note
This call is thread-safe.
static const std::string& version ( )
staticnoexcept
Returns
the version of the library.
Session & warmUp ( Messaging::MessageHolder< SbeMessageType, MaxMessageSize > &  msg,
Messaging::Timestamp  sendingTime = UtcWatch::now(),
int  warmupFlags = 0 
)

Warms up the sending path.

Parameters
msgSBE message to warm up the sending path.
warmupFlagsSpecific flags which can be used to turn on the warmup feature for a specific NIC.
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
Note
This call is thread-safe, except for the TCPDirect mode.
Returns
This session.

Definition at line 558 of file Session.h.

Session & warmUp ( Messaging::MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &  msgs,
Messaging::Timestamp  sendingTime = UtcWatch::now(),
size_t  maxPacketSize = B3BOEMaxPacketSize,
int  warmupFlags = 0 
)

Warms up the sending path.

Note
This call is thread-safe.
Parameters
msgsMessage batch to send.
maxPacketSizeThe maximum number of bytes written to the socket's send buffer together during the subsequent send call.
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
warmupFlagsSpecific flags which can be used to turn on the warmup feature for a specific NIC.
Note
The maxPacketSize parameter should not be less than any message size in the batch. Otherwise, the method call can produce an error, and the session can close the connection.
Returns
This session.

Definition at line 599 of file Session.h.

Session& warmUp ( MessageBatchCombiner msgs,
Messaging::Timestamp  sendingTime = UtcWatch::now(),
size_t  maxPacketSize = B3BOEMaxPacketSize,
int  warmupFlags = 0 
)

Warms up the sending path.

Note
This call is thread-safe.
Parameters
msgsMessage batch combiner to send.
maxPacketSizeThe maximum number of bytes written to the socket's send buffer together during the subsequent send call.
sendingTimeThe time value to be used for a sendingTimeEpoch field of the message(s) being sent.
warmupFlagsSpecific flags which can be used to turn on the warmup feature for a specific NIC.
Note
The maxPacketSize parameter should not be less than any message size in the batch. Otherwise, the method call can produce an error, and the session can close the connection.
Returns
This session.

Friends And Related Function Documentation

friend struct AdHoc::SessionHelper
friend

Definition at line 538 of file Session.h.

Member Data Documentation

const size_t B3BOEMaxPacketSize = 1420
static

Packet size maximum behavior based on MTU (Maximum Transmission Unit) 1420 bytes.

Definition at line 156 of file Session.h.

const Handle InvalidSocketHandle
static

Represents invalid value of socket handle.

Definition at line 499 of file Session.h.

const int UndefinedAffinity = -1
static

Definition at line 338 of file Session.h.

const UInt64 UndefinedSessionVerID = 0
static

Definition at line 50 of file Session.h.


The documentation for this class was generated from the following file: