OnixS C++ FIX Engine 4.14.0
Users' manual and API documentation
Loading...
Searching...
No Matches
Stack Class Reference

#include <OnixS/FIXEngine/FIX/TcpDirectStack.h>

Public Member Functions

 Stack (const Attributes &attr)
 Stack (const Stack &)=delete
 Stack (Stack &&)=delete
Stack & operator= (const Stack &)=delete
Stack & operator= (Stack &&)=delete
 ~Stack ()
void dispatchEvents () override
bool isQuiescent () const override
Threading::ThreadId threadId () const override
ReactorType::Enum type () const override
Public Member Functions inherited from ISessionReactor
virtual ~ISessionReactor ()=default

Friends

class FIX::ReactorOperator

Detailed Description

A high-level wrapper over the TCPDirect stack.

Definition at line 35 of file TcpDirectStack.h.

Constructor & Destructor Documentation

◆ Stack() [1/3]

Stack ( const Attributes & attr)
explicit

Allocates a stack with the supplied attributes.

Parameters
attrA set of properties to apply to the stack.

A stack binds to a single network interface, specified by the interface attribute in attr. *

Relevant attributes to set in attr are those in the zf_stack, zf_pool and zf_vi categories described in the attributes documentation.

Exceptions
Thestd::bad_alloc is thrown in case of out of memory. N.B. Huge pages are required.
Thestd::runtime_error is thrown if the TCPDirect library reported an error.
Thestd::exception is thrown if a system call reported an error.

◆ Stack() [2/3]

Stack ( const Stack & )
delete

◆ Stack() [3/3]

Stack ( Stack && )
delete

◆ ~Stack()

~Stack ( )

Member Function Documentation

◆ dispatchEvents()

void dispatchEvents ( )
inlineoverridevirtual

Processes events on a stack and performs the necessary handling.

These events include transmit and receive events raised by the hardware, and also software events such as TCP and FIX protocol timers.

Please see the "Stack polling" section in the TCPDirect User Guide for further information.

Note
After OnixS::FIX::Engine::shutdown() is called, the application may need to continue dispatching events until the stack becomes quiescent.
Warning
The event dispatching should be performed from the same thread that created the stack.

Implements ISessionReactor.

Definition at line 74 of file TcpDirectStack.h.

◆ isQuiescent()

bool isQuiescent ( ) const
inlineoverridevirtual
Returns
a boolean value indicating whether a stack is quiescent.

This can be used to ensure that all connections have been closed gracefully before the destroying of a stack (or exiting the application). The destroying of a stack while it is not quiescent is permitted by the API, but when doing so there is no guarantee that sent data has been acknowledged by the peer or even transmitted, and there is the possibility that peers' connections will be reset.

Note
After OnixS::FIX::Engine::shutdown(), the application should continue calling OnixS::FIX::TCPDirect::Stack::dispatchEvents() on the owning thread until this method returns true.

Implements ISessionReactor.

Definition at line 94 of file TcpDirectStack.h.

◆ operator=() [1/2]

Stack & operator= ( const Stack & )
delete

◆ operator=() [2/2]

Stack & operator= ( Stack && )
delete

◆ threadId()

Threading::ThreadId threadId ( ) const
inlineoverridevirtual

Returns the ID of the thread that created the stack.

Returns
the ID of the thread that created the stack.

Implements ISessionReactor.

Definition at line 105 of file TcpDirectStack.h.

◆ type()

ReactorType::Enum type ( ) const
inlineoverridevirtual
Returns
The type of the stack.

Implements ISessionReactor.

Definition at line 109 of file TcpDirectStack.h.

◆ FIX::ReactorOperator

friend class FIX::ReactorOperator
friend

Definition at line 123 of file TcpDirectStack.h.