FIX::Acceptor Class Referenceabstract

Base for classes which act as an acceptor for incoming connections. More...

`#include <Acceptor.h>`

Inheritance diagram for FIX::Acceptor:
[legend]
Collaboration diagram for FIX::Acceptor:
[legend]

## Public Member Functions

| Acceptor (Application &, MessageStoreFactory &, const SessionSettings &) throw ( ConfigError )
| Acceptor (Application &, MessageStoreFactory &, const SessionSettings &, LogFactory &) throw ( ConfigError )
virtual | ~Acceptor ()
Log * | getLog ()
void | start () throw ( ConfigError, RuntimeError )
| Start acceptor. More...
void | block () throw ( ConfigError, RuntimeError )
| Block on the acceptor. More...
bool | poll (double timeout=0.0) throw ( ConfigError, RuntimeError )
| Poll the acceptor. More...
void | stop (bool force=false)
| Stop acceptor. More...
bool | isLoggedOn ()
| Check to see if any sessions are currently logged on. More...
Session * | getSession (const std::string &msg, Responder &)
const std::set< SessionID > & | getSessions () const
Session * | getSession (const SessionID &sessionID) const
const Dictionary *const | getSessionSettings (const SessionID &sessionID) const
bool | has (const SessionID &id)
bool | isStopped ()
Application & | getApplication ()
MessageStoreFactory & | getMessageStoreFactory ()

## Protected Attributes

SessionSettings | m_settings

## Private Types

typedef std::set< SessionID > | SessionIDs
typedef std::map< SessionID, Session * > | Sessions

## Private Member Functions

void | initialize () throw ( ConfigError )
virtual void | onConfigure (const SessionSettings &) throw ( ConfigError )
| Implemented to configure acceptor. More...
virtual void | onInitialize (const SessionSettings &) throw ( RuntimeError )
| Implemented to initialize acceptor. More...
virtual void | onStart ()=0
| Implemented to start listening for connections. More...
virtual bool | onPoll (double second)=0
| Implemented to connect and poll for events. More...
virtual void | onStop ()=0
| Implemented to stop a running acceptor. More...

## Static Private Member Functions

static THREAD_PROC | startThread (void *p)

## Private Attributes

thread_id | m_threadid
Sessions | m_sessions
SessionIDs | m_sessionIDs
Application & | m_application
MessageStoreFactory & | m_messageStoreFactory
LogFactory * | m_pLogFactory
Log * | m_pLog
NullLog | m_nullLog
bool | m_firstPoll
bool | m_stop

## Detailed Description

Base for classes which act as an acceptor for incoming connections.

Most users will not need to implement one of these. The default SocketAcceptor implementation will be used in most cases.

Definition at line 49 of file Acceptor.h.

## Member Typedef Documentation

## SessionIDs

typedef std::set< SessionID > FIX::Acceptor::SessionIDs

private

Definition at line 109 of file Acceptor.h.

## Sessions

typedef std::map< SessionID, Session* > FIX::Acceptor::Sessions

private

Definition at line 110 of file Acceptor.h.

## Constructor & Destructor Documentation

## Acceptor() [1/2]

FIX::Acceptor::Acceptor | ( | Application & | application,
|  | MessageStoreFactory & | messageStoreFactory,
|  | const SessionSettings & | settings
| ) |  |
throw | ( | ConfigError
| ) |  |

Definition at line 36 of file Acceptor.cpp.

: m_threadid( 0 ),
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
m_pLogFactory( 0 ),
m_pLog( 0 ),
m_firstPoll( true ),
m_stop( true )
{
initialize();
}
FIX::Acceptor::initialize
void initialize()
Definition: Acceptor.cpp:69
FIX::Acceptor::m_settings
SessionSettings m_settings
Definition: Acceptor.h:118
FIX::Acceptor::m_firstPoll
bool m_firstPoll
Definition: Acceptor.h:123
FIX::Acceptor::m_messageStoreFactory
MessageStoreFactory & m_messageStoreFactory
Definition: Acceptor.h:116
FIX::Acceptor::m_pLog
Log * m_pLog
Definition: Acceptor.h:121
FIX::Acceptor::m_stop
bool m_stop
Definition: Acceptor.h:124
FIX::Acceptor::m_pLogFactory
LogFactory * m_pLogFactory
Definition: Acceptor.h:120
FIX::Acceptor::m_threadid
thread_id m_threadid
Definition: Acceptor.h:112
FIX::Acceptor::m_application
Application & m_application
Definition: Acceptor.h:115

## Acceptor() [2/2]

FIX::Acceptor::Acceptor | ( | Application & | application,
|  | MessageStoreFactory & | messageStoreFactory,
|  | const SessionSettings & | settings,
|  | LogFactory & | logFactory
| ) |  |
throw | ( | ConfigError
| ) |  |

Definition at line 52 of file Acceptor.cpp.

: m_threadid( 0 ),
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
m_pLogFactory( &logFactory ),
m_pLog( logFactory.create() ),
m_firstPoll( true ),
m_stop( true )
{
initialize();
}

## ~Acceptor()

FIX::Acceptor::~Acceptor | ( |  | ) |

virtual

Definition at line 93 of file Acceptor.cpp.

{
Sessions::iterator i;
for ( i = m_sessions.begin(); i != m_sessions.end(); ++i )
delete i->second;
if( m_pLogFactory && m_pLog )
m_pLogFactory->destroy( m_pLog );
}
FIX::Acceptor::m_sessions
Sessions m_sessions
Definition: Acceptor.h:113
FIX::LogFactory::destroy
virtual void destroy(Log *)=0

References FIX::LogFactory::destroy(), m_pLog, m_pLogFactory, and m_sessions.

## Member Function Documentation

## block()

void FIX::Acceptor::block | ( |  | ) |
throw | ( | ConfigError,
|  | RuntimeError
| ) |  |

Block on the acceptor.

Definition at line 170 of file Acceptor.cpp.

{
m_stop = false;
onConfigure( m_settings );
onInitialize( m_settings );
startThread(this);
}
FIX::Acceptor::onInitialize
virtual void onInitialize(const SessionSettings &)
Implemented to initialize acceptor.
Definition: Acceptor.h:99
FIX::Acceptor::startThread
static THREAD_PROC startThread(void *p)
Definition: Acceptor.cpp:242
FIX::Acceptor::onConfigure
virtual void onConfigure(const SessionSettings &)
Implemented to configure acceptor.
Definition: Acceptor.h:97

References m_settings, m_stop, onConfigure(), onInitialize(), and startThread().

## getApplication()

Application& FIX::Acceptor::getApplication | ( |  | ) |

inline

Definition at line 89 of file Acceptor.h.

{ return m_application; }

References m_application.

## getLog()

Log* FIX::Acceptor::getLog | ( |  | ) |

inline

Definition at line 59 of file Acceptor.h.

{
if( m_pLog ) return m_pLog;
return &m_nullLog;
}
FIX::Acceptor::m_nullLog
NullLog m_nullLog
Definition: Acceptor.h:122

References m_nullLog, and m_pLog.

Referenced by FIX::SocketAcceptor::onConnect(), FIX::SocketConnection::read(), and FIX::ThreadedSocketAcceptor::socketAcceptorThread().

## getMessageStoreFactory()

MessageStoreFactory& FIX::Acceptor::getMessageStoreFactory | ( |  | ) |

inline

Definition at line 90 of file Acceptor.h.

{ return m_messageStoreFactory; }

References m_messageStoreFactory.

## getSession() [1/2]

Session * FIX::Acceptor::getSession | ( | const SessionID & | sessionID | ) | const

Definition at line 137 of file Acceptor.cpp.

{
Sessions::const_iterator i = m_sessions.find( sessionID );
if( i != m_sessions.end() )
return i->second;
else
return 0;
}

References m_sessions.

## getSession() [2/2]

Session * FIX::Acceptor::getSession | ( | const std::string & | msg,
|  | Responder & | responder
| ) |  |

Definition at line 103 of file Acceptor.cpp.

{
Message message;
if ( !message.setStringHeader( msg ) )
return 0;
BeginString beginString;
SenderCompID clSenderCompID;
TargetCompID clTargetCompID;
MsgType msgType;
try
{
message.getHeader().getField( beginString );
message.getHeader().getField( clSenderCompID );
message.getHeader().getField( clTargetCompID );
message.getHeader().getField( msgType );
if ( msgType != "A" ) return 0;
SenderCompID senderCompID( clTargetCompID );
TargetCompID targetCompID( clSenderCompID );
SessionID sessionID( beginString, senderCompID, targetCompID );
Sessions::iterator i = m_sessions.find( sessionID );
if ( i != m_sessions.end() )
{
i->second->setResponder( &responder );
return i->second;
}
}
catch ( FieldNotFound& ) {}
return 0;
}

References FIX::FieldMap::getField(), FIX::Message::getHeader(), m_sessions, and FIX::Message::setStringHeader().

Referenced by FIX::SocketConnection::read().

## getSessions()

const std::set<SessionID>& FIX::Acceptor::getSessions | ( |  | ) | const

inline

Definition at line 80 of file Acceptor.h.

{ return m_sessionIDs; }
FIX::Acceptor::m_sessionIDs
SessionIDs m_sessionIDs
Definition: Acceptor.h:114

References m_sessionIDs.

## getSessionSettings()

const Dictionary *const FIX::Acceptor::getSessionSettings | ( | const SessionID & | sessionID | ) | const

Definition at line 146 of file Acceptor.cpp.

{
try
{
return &m_settings.get( sessionID );
}
catch( ConfigError& )
{
return 0;
}
}
FIX::SessionSettings::get
const Dictionary & get(const SessionID &) const
Get a dictionary for a session.
Definition: SessionSettings.cpp:127

References FIX::SessionSettings::get(), and m_settings.

## has()

bool FIX::Acceptor::has | ( | const SessionID & | id | ) |

inline

Definition at line 84 of file Acceptor.h.

{ return m_sessions.find( id ) != m_sessions.end(); }

References m_sessions.

## initialize()

void FIX::Acceptor::initialize | ( |  | ) |
throw | ( | ConfigError
| ) |  |

private

Definition at line 69 of file Acceptor.cpp.

{
std::set < SessionID > sessions = m_settings.getSessions();
std::set < SessionID > ::iterator i;
if ( !sessions.size() )
throw ConfigError( "No sessions defined" );
SessionFactory factory( m_application, m_messageStoreFactory,
m_pLogFactory );
for ( i = sessions.begin(); i != sessions.end(); ++i )
{
if ( m_settings.get( *i ).getString( CONNECTION_TYPE ) == "acceptor" )
{
m_sessionIDs.insert( *i );
m_sessions[ *i ] = factory.create( *i, m_settings.get( *i ) );
}
}
if ( !m_sessions.size() )
throw ConfigError( "No sessions defined for acceptor" );
}
FIX::Dictionary::getString
std::string getString(const std::string &, bool capitalize=false) const
Get a value as a string.
Definition: Dictionary.cpp:32
FIX::SessionSettings::getSessions
std::set< SessionID > getSessions() const
Definition: SessionSettings.cpp:160
FIX::CONNECTION_TYPE
const char CONNECTION_TYPE[]
Definition: SessionSettings.h:42

References FIX::CONNECTION_TYPE, FIX::SessionFactory::create(), FIX::SessionSettings::get(), FIX::SessionSettings::getSessions(), FIX::Dictionary::getString(), m_application, m_messageStoreFactory, m_pLogFactory, m_sessionIDs, m_sessions, and m_settings.

## isLoggedOn()

bool FIX::Acceptor::isLoggedOn | ( |  | ) |

Check to see if any sessions are currently logged on.

Definition at line 230 of file Acceptor.cpp.

{
Sessions sessions = m_sessions;
Sessions::iterator i = sessions.begin();
for ( ; i != sessions.end(); ++i )
{
if( i->second->isLoggedOn() )
return true;
}
return false;
}
FIX::Acceptor::Sessions
std::map< SessionID, Session * > Sessions
Definition: Acceptor.h:110

References m_sessions.

Referenced by FIX::SocketAcceptor::onPoll(), FIX::SocketAcceptor::onStart(), FIX::ThreadedSocketAcceptor::onStop(), and stop().

## isStopped()

bool FIX::Acceptor::isStopped | ( |  | ) |

inline

Definition at line 87 of file Acceptor.h.

{ return m_stop; }

References m_stop.

Referenced by FIX::SocketAcceptor::onPoll(), FIX::SocketAcceptor::onStart(), FIX::ThreadedSocketAcceptor::socketAcceptorThread(), FIX::ThreadedSocketAcceptor::socketConnectionThread(), and stop().

## onConfigure()

virtual void FIX::Acceptor::onConfigure | ( | const SessionSettings & |  | ) |
throw | ( | ConfigError
| ) |  |

inline private virtual

Implemented to configure acceptor.

Reimplemented in FIX::ThreadedSocketAcceptor, and FIX::SocketAcceptor.

Definition at line 97 of file Acceptor.h.

{};

Referenced by block(), and start().

## onInitialize()

virtual void FIX::Acceptor::onInitialize | ( | const SessionSettings & |  | ) |
throw | ( | RuntimeError
| ) |  |

inline private virtual

Implemented to initialize acceptor.

Reimplemented in FIX::ThreadedSocketAcceptor, and FIX::SocketAcceptor.

Definition at line 99 of file Acceptor.h.

{};

Referenced by block(), and start().

## onPoll()

virtual bool FIX::Acceptor::onPoll | ( | double | second | ) |

private pure virtual

Implemented to connect and poll for events.

Implemented in FIX::ThreadedSocketAcceptor, and FIX::SocketAcceptor.

## onStart()

virtual void FIX::Acceptor::onStart | ( |  | ) |

private pure virtual

Implemented to start listening for connections.

Implemented in FIX::ThreadedSocketAcceptor, and FIX::SocketAcceptor.

Referenced by startThread().

## onStop()

virtual void FIX::Acceptor::onStop | ( |  | ) |

private pure virtual

Implemented to stop a running acceptor.

Implemented in FIX::ThreadedSocketAcceptor, and FIX::SocketAcceptor.

Referenced by stop().

## poll()

bool FIX::Acceptor::poll | ( | double | timeout = `0.0` | ) |
throw | ( | ConfigError,
|  | RuntimeError
| ) |  |

Poll the acceptor.

Definition at line 179 of file Acceptor.cpp.

{
if( m_firstPoll )
{
m_stop = false;
onConfigure( m_settings );
onInitialize( m_settings );
m_firstPoll = false;
}
return onPoll( timeout );
}
FIX::Acceptor::onPoll
virtual bool onPoll(double second)=0
Implemented to connect and poll for events.

## start()

void FIX::Acceptor::start | ( |  | ) |
throw | ( | ConfigError,
|  | RuntimeError
| ) |  |

Start acceptor.

Definition at line 158 of file Acceptor.cpp.

{
m_stop = false;
onConfigure( m_settings );
onInitialize( m_settings );
HttpServer::startGlobal( m_settings );
if( !thread_spawn( &startThread, this, m_threadid ) )
throw RuntimeError("Unable to spawn thread");
}
FIX::HttpServer::startGlobal
static void startGlobal(const SessionSettings &)
Definition: HttpServer.cpp:37
FIX::thread_spawn
bool thread_spawn(THREAD_START_ROUTINE func, void *var, thread_id &thread)
Definition: Utility.cpp:416

References m_settings, m_stop, m_threadid, onConfigure(), onInitialize(), FIX::HttpServer::startGlobal(), startThread(), and FIX::thread_spawn().

Referenced by FIX::SocketAcceptor::onPoll(), FIX::SocketAcceptor::onStart(), and FIX::ThreadedSocketAcceptor::onStop().

## startThread()

THREAD_PROC FIX::Acceptor::startThread | ( | void * | p | ) |

static private

Definition at line 242 of file Acceptor.cpp.

{
Acceptor * pAcceptor = static_cast < Acceptor* > ( p );
pAcceptor->onStart();
return 0;
}
FIX::Acceptor::Acceptor
Acceptor(Application &, MessageStoreFactory &, const SessionSettings &)
Definition: Acceptor.cpp:36

References onStart().

Referenced by block(), and start().

## stop()

void FIX::Acceptor::stop | ( | bool | force = `false` | ) |

Stop acceptor.

Definition at line 192 of file Acceptor.cpp.

{
if( isStopped() ) return;
HttpServer::stopGlobal();
std::vector<Session*> enabledSessions;
Sessions sessions = m_sessions;
Sessions::iterator i = sessions.begin();
for ( ; i != sessions.end(); ++i )
{
Session* pSession = Session::lookupSession(i->first);
if( pSession && pSession->isEnabled() )
{
enabledSessions.push_back( pSession );
pSession->logout();
Session::unregisterSession( pSession->getSessionID() );
}
}
if( !force )
{
for ( int second = 1; second <= 10 && isLoggedOn(); ++second )
process_sleep( 1 );
}
m_stop = true;
onStop();
if( m_threadid )
thread_join( m_threadid );
m_threadid = 0;
std::vector<Session*>::iterator session = enabledSessions.begin();
for( ; session != enabledSessions.end(); ++session )
(*session)->logon();
}
FIX::Acceptor::onStop
virtual void onStop()=0
Implemented to stop a running acceptor.
FIX::Acceptor::isStopped
bool isStopped()
Definition: Acceptor.h:87
FIX::Acceptor::isLoggedOn
bool isLoggedOn()
Check to see if any sessions are currently logged on.
Definition: Acceptor.cpp:230
FIX::HttpServer::stopGlobal
static void stopGlobal()
Definition: HttpServer.cpp:53
FIX::Session::unregisterSession
static void unregisterSession(const SessionID &)
Definition: Session.cpp:1547
FIX::Session::lookupSession
static Session * lookupSession(const SessionID &)
Definition: Session.cpp:1496
FIX::process_sleep
void process_sleep(double s)
Definition: Utility.cpp:466
FIX::thread_join
void thread_join(thread_id thread)
Definition: Utility.cpp:437

References FIX::Session::getSessionID(), FIX::Session::isEnabled(), isLoggedOn(), isStopped(), FIX::Session::logout(), FIX::Session::lookupSession(), m_sessions, m_stop, m_threadid, onStop(), FIX::process_sleep(), FIX::HttpServer::stopGlobal(), FIX::thread_join(), and FIX::Session::unregisterSession().

## Member Data Documentation

## m_application

Application& FIX::Acceptor::m_application

private

Definition at line 115 of file Acceptor.h.

Referenced by getApplication(), and initialize().

## m_firstPoll

bool FIX::Acceptor::m_firstPoll

private

Definition at line 123 of file Acceptor.h.

## m_messageStoreFactory

MessageStoreFactory& FIX::Acceptor::m_messageStoreFactory

private

Definition at line 116 of file Acceptor.h.

Referenced by getMessageStoreFactory(), and initialize().

## m_nullLog

NullLog FIX::Acceptor::m_nullLog

private

Definition at line 122 of file Acceptor.h.

Referenced by getLog().

## m_pLog

Log* FIX::Acceptor::m_pLog

private

Definition at line 121 of file Acceptor.h.

Referenced by getLog(), and ~Acceptor().

## m_pLogFactory

LogFactory* FIX::Acceptor::m_pLogFactory

private

Definition at line 120 of file Acceptor.h.

Referenced by initialize(), and ~Acceptor().

## m_sessionIDs

SessionIDs FIX::Acceptor::m_sessionIDs

private

Definition at line 114 of file Acceptor.h.

Referenced by getSessions(), and initialize().

## m_sessions

Sessions FIX::Acceptor::m_sessions

private

Definition at line 113 of file Acceptor.h.

Referenced by getSession(), has(), initialize(), isLoggedOn(), stop(), and ~Acceptor().

## m_settings

SessionSettings FIX::Acceptor::m_settings

protected

Definition at line 118 of file Acceptor.h.

Referenced by block(), getSessionSettings(), initialize(), and start().

## m_stop

bool FIX::Acceptor::m_stop

private

Definition at line 124 of file Acceptor.h.

Referenced by block(), isStopped(), start(), and stop().

## m_threadid

thread_id FIX::Acceptor::m_threadid

private

Definition at line 112 of file Acceptor.h.

Referenced by start(), and stop().

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

- Acceptor.h
- Acceptor.cpp