Index  Source Files  Annotated Class List  Alphabetical Class List  Class Hierarchy  Graphical Class Hierarchy   
 

FIX::SessionSettings Class Reference

Container for setting dictionaries mapped to sessions. More...

#include <SessionSettings.h>

Collaboration diagram for FIX::SessionSettings:

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::map< SessionID,
Dictionary
Dictionaries

Public Member Functions

 SessionSettings ()
 SessionSettings (std::istream &stream) throw ( ConfigError )
 SessionSettings (const std::string &file) throw ( ConfigError )
const bool has (const SessionID &) const
 Check if session setings are present.

const Dictionaryget (const SessionID &) const throw ( ConfigError )
 Get a dictionary for a session.

void set (const SessionID &, Dictionary) throw ( ConfigError )
 Set a dictionary for a session.

const Dictionaryget () const
 Get global default settings.

void set (const Dictionary &defaults) throw ( ConfigError )
 Set global default settings.

int size ()
 Number of session settings.

std::set< SessionIDgetSessions () const

Private Member Functions

void validate (const Dictionary &) const throw ( ConfigError )

Private Attributes

Dictionaries m_settings
Dictionary m_defaults

Detailed Description

Container for setting dictionaries mapped to sessions.

Definition at line 107 of file SessionSettings.h.


Member Typedef Documentation

typedef std::map< SessionID, Dictionary > FIX::SessionSettings::Dictionaries
 

Definition at line 130 of file SessionSettings.h.


Constructor & Destructor Documentation

FIX::SessionSettings::SessionSettings  )  [inline]
 

Definition at line 110 of file SessionSettings.h.

00110 {}

FIX::SessionSettings::SessionSettings std::istream &  stream  )  throw ( ConfigError )
 

Definition at line 34 of file SessionSettings.cpp.

00036 {
00037   stream >> *this;
00038 }

FIX::SessionSettings::SessionSettings const std::string &  file  )  throw ( ConfigError )
 

Definition at line 40 of file SessionSettings.cpp.

00042 {
00043   std::ifstream fstream( file.c_str() );
00044   if ( !fstream.is_open() )
00045     throw ConfigError( ( "File " + file + " not found" ).c_str() );
00046   fstream >> *this;
00047 }


Member Function Documentation

const Dictionary& FIX::SessionSettings::get  )  const [inline]
 

Get global default settings.

Definition at line 123 of file SessionSettings.h.

References m_defaults.

00123 { return m_defaults; }

const Dictionary & FIX::SessionSettings::get const SessionID  )  const throw ( ConfigError )
 

Get a dictionary for a session.

Definition at line 94 of file SessionSettings.cpp.

References QF_STACK_POP, and QF_STACK_PUSH.

Referenced by FIX::Initiator::connect(), FIX::ScreenLogFactory::create(), FIX::FileStoreFactory::create(), and FIX::FileLogFactory::create().

00096 { QF_STACK_PUSH(SessionSettings::get)
00097 
00098   Dictionaries::const_iterator i;
00099   i = m_settings.find( sessionID );
00100   if ( i == m_settings.end() ) throw ConfigError( "Session not found" );
00101   return i->second;
00102 
00103   QF_STACK_POP
00104 }

std::set< SessionID > FIX::SessionSettings::getSessions  )  const
 

Definition at line 130 of file SessionSettings.cpp.

References QF_STACK_POP, and QF_STACK_PUSH.

00131 { QF_STACK_PUSH(SessionSettings::getSessions)
00132 
00133   std::set < SessionID > result;
00134   Dictionaries::const_iterator i;
00135   for ( i = m_settings.begin(); i != m_settings.end(); ++i )
00136     result.insert( i->first );
00137   return result;
00138 
00139   QF_STACK_POP
00140 }

const bool FIX::SessionSettings::has const SessionID  )  const
 

Check if session setings are present.

Definition at line 88 of file SessionSettings.cpp.

References QF_STACK_POP, and QF_STACK_PUSH.

Referenced by FIX::ScreenLogFactory::create().

00089 { QF_STACK_PUSH(SessionSettings::has)
00090   return m_settings.find( sessionID ) != m_settings.end();
00091   QF_STACK_POP
00092 }

void FIX::SessionSettings::set const Dictionary defaults  )  throw ( ConfigError )
 

Set global default settings.

Definition at line 122 of file SessionSettings.cpp.

00123 { 
00124   m_defaults = defaults;
00125   Dictionaries::iterator i = m_settings.begin();
00126   for( i = m_settings.begin(); i != m_settings.end(); ++i )
00127     i->second.merge( defaults );
00128 }

void FIX::SessionSettings::set const SessionID ,
Dictionary 
throw ( ConfigError )
 

Set a dictionary for a session.

Definition at line 106 of file SessionSettings.cpp.

References FIX::BEGINSTRING, QF_STACK_POP, QF_STACK_PUSH, FIX::SENDERCOMPID, and FIX::TARGETCOMPID.

00109 { QF_STACK_PUSH(SessionSettings::set)
00110 
00111   settings.setString( BEGINSTRING, sessionID.getBeginString() );
00112   settings.setString( SENDERCOMPID, sessionID.getSenderCompID() );
00113   settings.setString( TARGETCOMPID, sessionID.getTargetCompID() );
00114 
00115   settings.merge( m_defaults );
00116   validate( settings );
00117   m_settings[ sessionID ] = settings;
00118 
00119   QF_STACK_POP
00120 }

int FIX::SessionSettings::size  )  [inline]
 

Number of session settings.

Definition at line 128 of file SessionSettings.h.

00128 { return m_settings.size(); }

void FIX::SessionSettings::validate const Dictionary  )  const throw ( ConfigError ) [private]
 

Definition at line 142 of file SessionSettings.cpp.

References FIX::BEGINSTRING, FIX::BeginString_FIX40, FIX::BeginString_FIX41, FIX::BeginString_FIX42, FIX::BeginString_FIX43, FIX::BeginString_FIX44, and FIX::CONNECTION_TYPE.

00144 {
00145   std::string beginString = dictionary.getString( BEGINSTRING );
00146   if( beginString != BeginString_FIX40 &&
00147       beginString != BeginString_FIX41 &&
00148       beginString != BeginString_FIX42 &&
00149       beginString != BeginString_FIX43 &&
00150       beginString != BeginString_FIX44 )
00151   {
00152     throw ConfigError( std::string(BEGINSTRING) + " must be FIX.4.0 to FIX.4.4" );
00153   }
00154 
00155   std::string connectionType = dictionary.getString( CONNECTION_TYPE );
00156   if( connectionType != "initiator" &&
00157       connectionType != "acceptor" )
00158   {
00159     throw ConfigError( std::string(CONNECTION_TYPE) + " must be 'initiator' or 'acceptor'" );
00160   }
00161 }


Member Data Documentation

Dictionary FIX::SessionSettings::m_defaults [private]
 

Definition at line 137 of file SessionSettings.h.

Referenced by get().

Dictionaries FIX::SessionSettings::m_settings [private]
 

Definition at line 136 of file SessionSettings.h.


The documentation for this class was generated from the following files:
Generated on Mon Jul 24 19:36:49 2006 for QuickFIX by doxygen 1.3.6-20040222 written by Dimitri van Heesch, © 1997-2001