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 66 of file Acceptor.h.

## Member Typedef Documentation

## SessionIDs

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

private

Definition at line 126 of file Acceptor.h.

## Sessions

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

private

Definition at line 127 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 53 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() [2/2]

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

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 );

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.

## ~Acceptor()

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

virtual

Definition at line 110 of file Acceptor.cpp.

{
message.getHeader().getField( beginString );
message.getHeader().getField( clSenderCompID );
message.getHeader().getField( clTargetCompID );

## Member Function Documentation

## block()

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

Block on the acceptor.

Definition at line 187 of file Acceptor.cpp.

{
if( isStopped() ) return;

## getApplication()

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

inline

Definition at line 106 of file Acceptor.h.

## getLog()

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

inline

Definition at line 76 of file Acceptor.h.

{ return m_sessionIDs; }

References m_sessionIDs.

Referenced by FIX::ThreadedSocketAcceptor::socketAcceptorThread().

## getMessageStoreFactory()

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

inline

Definition at line 107 of file Acceptor.h.

## getSession() [1/2]

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

Definition at line 154 of file Acceptor.cpp.

{
m_stop = false;
onConfigure( m_settings );

## getSession() [2/2]

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

Definition at line 121 of file Acceptor.cpp.

{
i->second->setResponder( &responder );
return i->second;
}
}
catch ( FieldNotFound& ) {}
return 0;
}
Session* Acceptor::getSession( const SessionID& sessionID ) const
{
Sessions::const_iterator i = m_sessions.find( sessionID );
if( i != m_sessions.end() )
return i->second;
else
return 0;
}
const Dictionary* const Acceptor::getSessionSettings( const SessionID& sessionID ) const
{
try
{
return &m_settings.get( sessionID );
}
catch( ConfigError& )

## getSessions()

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

inline

Definition at line 97 of file Acceptor.h.

{};

## getSessionSettings()

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

Definition at line 163 of file Acceptor.cpp.

{
m_stop = false;
onConfigure( m_settings );

## has()

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

inline

Definition at line 101 of file Acceptor.h.

## initialize()

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

private

Definition at line 86 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 );
}
Session* Acceptor::getSession
( const std::string& msg, Responder& responder )
{
Message message;
if ( !message.setStringHeader( msg ) )
return 0;

## isLoggedOn()

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

Check to see if any sessions are currently logged on.

Definition at line 247 of file Acceptor.cpp.

## isStopped()

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

inline

Definition at line 104 of file Acceptor.h.

## 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 114 of file Acceptor.h.

:
SessionSettings m_settings;

## 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 116 of file Acceptor.h.

:
SessionSettings m_settings;

## 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.

## onStop()

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

private pure virtual

Implemented to stop a running acceptor.

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

## poll()

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

Poll the acceptor.

Definition at line 196 of file Acceptor.cpp.

{
Session* pSession = Session::lookupSession(i->first);
if( pSession && pSession->isEnabled() )
{
enabledSessions.push_back( pSession );

## start()

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

Start acceptor.

Definition at line 175 of file Acceptor.cpp.

{
if( m_firstPoll )
{
m_stop = false;
onConfigure( m_settings );
onInitialize( m_settings );

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

## startThread()

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

static private

Definition at line 259 of file Acceptor.cpp.

## stop()

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

Stop acceptor.

Definition at line 209 of file Acceptor.cpp.

{
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();
}
bool Acceptor::isLoggedOn()
{
Sessions sessions = m_sessions;
Sessions::iterator i = sessions.begin();
for ( ; i != sessions.end(); ++i )
{
if( i->second->isLoggedOn() )
return true;
}
return false;
}
THREAD_PROC Acceptor::startThread( void* p )
{
Acceptor * pAcceptor = static_cast < Acceptor* > ( p );
pAcceptor->onStart();

## Member Data Documentation

## m_application

Application& FIX::Acceptor::m_application

private

Definition at line 132 of file Acceptor.h.

Referenced by Acceptor().

## m_firstPoll

bool FIX::Acceptor::m_firstPoll

private

Definition at line 140 of file Acceptor.h.

## m_messageStoreFactory

MessageStoreFactory& FIX::Acceptor::m_messageStoreFactory

private

Definition at line 133 of file Acceptor.h.

Referenced by Acceptor().

## m_nullLog

NullLog FIX::Acceptor::m_nullLog

private

Definition at line 139 of file Acceptor.h.

## m_pLog

Log* FIX::Acceptor::m_pLog

private

Definition at line 138 of file Acceptor.h.

## m_pLogFactory

LogFactory* FIX::Acceptor::m_pLogFactory

private

Definition at line 137 of file Acceptor.h.

Referenced by Acceptor().

## m_sessionIDs

SessionIDs FIX::Acceptor::m_sessionIDs

private

Definition at line 131 of file Acceptor.h.

Referenced by Acceptor(), and getLog().

## m_sessions

Sessions FIX::Acceptor::m_sessions

private

Definition at line 130 of file Acceptor.h.

Referenced by Acceptor().

## m_settings

SessionSettings FIX::Acceptor::m_settings

protected

Definition at line 135 of file Acceptor.h.

Referenced by Acceptor().

## m_stop

bool FIX::Acceptor::m_stop

private

Definition at line 141 of file Acceptor.h.

## m_threadid

thread_id FIX::Acceptor::m_threadid

private

Definition at line 129 of file Acceptor.h.

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

- Acceptor.h
- Acceptor.cpp

FIX::Acceptor::getSession
Session * getSession(const std::string &msg, Responder &)
Definition: Acceptor.cpp:121
FIX::Acceptor::onInitialize
virtual void onInitialize(const SessionSettings &)
Implemented to initialize acceptor.
Definition: Acceptor.h:116
FIX::Session::lookupSession
static Session * lookupSession(const SessionID &)
Definition: Session.cpp:1513
FIX::Acceptor::getSessionSettings
const Dictionary *const getSessionSettings(const SessionID &sessionID) const
Definition: Acceptor.cpp:163
FIX::Acceptor::m_messageStoreFactory
MessageStoreFactory & m_messageStoreFactory
Definition: Acceptor.h:133
FIX::CONNECTION_TYPE
const char CONNECTION_TYPE[]
Definition: SessionSettings.h:59
FIX::Dictionary::getString
std::string getString(const std::string &, bool capitalize=false) const
Get a value as a string.
Definition: Dictionary.cpp:49
FIX::Acceptor::m_pLogFactory
LogFactory * m_pLogFactory
Definition: Acceptor.h:137
FIX::Acceptor::m_firstPoll
bool m_firstPoll
Definition: Acceptor.h:140
FIX::Acceptor::Acceptor
Acceptor(Application &, MessageStoreFactory &, const SessionSettings &)
Definition: Acceptor.cpp:53
FIX::Acceptor::startThread
static THREAD_PROC startThread(void *p)
Definition: Acceptor.cpp:259
THREAD_PROC
#define THREAD_PROC
Definition: Utility.h:184
FIX::Acceptor::isLoggedOn
bool isLoggedOn()
Check to see if any sessions are currently logged on.
Definition: Acceptor.cpp:247
FIX::Acceptor::Sessions
std::map< SessionID, Session * > Sessions
Definition: Acceptor.h:127
FIX::SessionSettings::getSessions
std::set< SessionID > getSessions() const
Definition: SessionSettings.cpp:177
FIX::Acceptor::m_pLog
Log * m_pLog
Definition: Acceptor.h:138
FIX::LogFactory::destroy
virtual void destroy(Log *)=0
FIX::Acceptor::m_sessionIDs
SessionIDs m_sessionIDs
Definition: Acceptor.h:131
FIX::Acceptor::onStop
virtual void onStop()=0
Implemented to stop a running acceptor.
FIX::process_sleep
void process_sleep(double s)
Definition: Utility.cpp:483
FIX::Acceptor::m_stop
bool m_stop
Definition: Acceptor.h:141
FIX::Acceptor::initialize
void initialize()
Definition: Acceptor.cpp:86
FIX::thread_join
void thread_join(thread_id thread)
Definition: Utility.cpp:454
FIX::Acceptor::onConfigure
virtual void onConfigure(const SessionSettings &)
Implemented to configure acceptor.
Definition: Acceptor.h:114
FIX::Acceptor::m_settings
SessionSettings m_settings
Definition: Acceptor.h:135
FIX::Acceptor::isStopped
bool isStopped()
Definition: Acceptor.h:104
FIX::SessionSettings::get
const Dictionary & get(const SessionID &) const
Get a dictionary for a session.
Definition: SessionSettings.cpp:144
FIX::Acceptor::m_application
Application & m_application
Definition: Acceptor.h:132
FIX::Acceptor::m_sessions
Sessions m_sessions
Definition: Acceptor.h:130
FIX::Acceptor::m_threadid
thread_id m_threadid
Definition: Acceptor.h:129