Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends
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 () const
 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

Friends

std::ostream & operator<< (std::ostream &, const SessionSettings &)

Detailed Description

Container for setting dictionaries mapped to sessions.

Definition at line 130 of file SessionSettings.h.


Member Typedef Documentation

Definition at line 153 of file SessionSettings.h.


Constructor & Destructor Documentation

Definition at line 133 of file SessionSettings.h.

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

Definition at line 33 of file SessionSettings.cpp.

{
  stream >> *this;
}
FIX::SessionSettings::SessionSettings ( const std::string &  file) throw ( ConfigError )

Definition at line 39 of file SessionSettings.cpp.

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

Member Function Documentation

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

Get a dictionary for a session.

Definition at line 125 of file SessionSettings.cpp.

Referenced by FIX::Initiator::connect(), FIX::FileStoreFactory::create(), FIX::FileLogFactory::create(), FIX::ScreenLogFactory::create(), FIX::Initiator::getSessionSettings(), FIX::Acceptor::getSessionSettings(), FIX::Acceptor::initialize(), FIX::Initiator::initialize(), and FIX::operator<<().

{
  Dictionaries::const_iterator i;
  i = m_settings.find( sessionID );
  if ( i == m_settings.end() ) throw ConfigError( "Session not found" );
  return i->second;
}
const Dictionary& FIX::SessionSettings::get ( ) const [inline]

Get global default settings.

Definition at line 146 of file SessionSettings.h.

References m_defaults.

{ return m_defaults; }

Definition at line 158 of file SessionSettings.cpp.

References m_settings.

Referenced by FIX::Acceptor::initialize(), FIX::Initiator::initialize(), and FIX::operator<<().

{
  std::set < SessionID > result;
  Dictionaries::const_iterator i;
  for ( i = m_settings.begin(); i != m_settings.end(); ++i )
    result.insert( i->first );
  return result;
}
const bool FIX::SessionSettings::has ( const SessionID sessionID) const

Check if session setings are present.

Definition at line 120 of file SessionSettings.cpp.

References m_settings.

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

{
  return m_settings.find( sessionID ) != m_settings.end();
}
void FIX::SessionSettings::set ( const SessionID sessionID,
Dictionary  settings 
) throw ( ConfigError )

Set a dictionary for a session.

Definition at line 134 of file SessionSettings.cpp.

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

{
  if( has(sessionID) )
    throw ConfigError( "Duplicate Session " + sessionID.toString() );

  settings.setString( BEGINSTRING, sessionID.getBeginString() );
  settings.setString( SENDERCOMPID, sessionID.getSenderCompID() );
  settings.setString( TARGETCOMPID, sessionID.getTargetCompID() );

  settings.merge( m_defaults );
  validate( settings );
  m_settings[ sessionID ] = settings;
}
void FIX::SessionSettings::set ( const Dictionary defaults) throw ( ConfigError )

Set global default settings.

Definition at line 150 of file SessionSettings.cpp.

{ 
  m_defaults = defaults;
  Dictionaries::iterator i = m_settings.begin();
  for( i = m_settings.begin(); i != m_settings.end(); ++i )
    i->second.merge( defaults );
}
int FIX::SessionSettings::size ( ) const [inline]

Number of session settings.

Definition at line 151 of file SessionSettings.h.

References m_settings.

{ return m_settings.size(); }
void FIX::SessionSettings::validate ( const Dictionary dictionary) const throw ( ConfigError ) [private]

Definition at line 167 of file SessionSettings.cpp.

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

{
  std::string beginString = dictionary.getString( BEGINSTRING );
  if( beginString != BeginString_FIX40 &&
      beginString != BeginString_FIX41 &&
      beginString != BeginString_FIX42 &&
      beginString != BeginString_FIX43 &&
      beginString != BeginString_FIX44 &&
      beginString != BeginString_FIXT11 )
  {
    throw ConfigError( std::string(BEGINSTRING) + " must be FIX.4.0 to FIX.4.4 or FIXT.1.1" );
  }

  std::string connectionType = dictionary.getString( CONNECTION_TYPE );
  if( connectionType != "initiator" &&
      connectionType != "acceptor" )
  {
    throw ConfigError( std::string(CONNECTION_TYPE) + " must be 'initiator' or 'acceptor'" );
  }
}

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  ,
const SessionSettings  
) [friend]

Definition at line 87 of file SessionSettings.cpp.

{
  const Dictionary& defaults = s.m_defaults;
  if( defaults.size() )
  {
    stream << "[DEFAULT]" << std::endl;
    Dictionary::iterator i;
    for( i = defaults.begin(); i != defaults.end(); ++i )
      stream << i->first << "=" << i->second << std::endl;
    stream << std::endl;
  }

  std::set<SessionID> sessions = s.getSessions();
  std::set<SessionID>::iterator i;
  for( i = sessions.begin(); i != sessions.end(); ++i )
  {
    stream << "[SESSION]" << std::endl;
    const Dictionary& section = s.get( *i );
    if( !section.size() ) continue;

    Dictionary::iterator i;
    for( i = section.begin(); i != section.end(); ++i )
    {
      if( defaults.has(i->first) && defaults.getString(i->first) == i->second )
        continue;
      stream << i->first << "=" << i->second << std::endl;
    }
    stream << std::endl;
  }

  return stream;
}

Member Data Documentation

Definition at line 160 of file SessionSettings.h.

Referenced by get(), and FIX::operator<<().

Definition at line 159 of file SessionSettings.h.

Referenced by getSessions(), has(), and size().


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

Generated on Mon Jun 23 2014 23:49:39 for QuickFIX by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001