FIX::SessionSettings Class Reference

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

#include <SessionSettings.h>

Collaboration diagram for FIX::SessionSettings:

Public Types

typedef std::map< SessionID, DictionaryDictionaries

Public Member Functions

 SessionSettings ()
 SessionSettings (std::istream &stream, bool resolveEnvVars=false) throw ( ConfigError )
 SessionSettings (const std::string &file, bool resolveEnvVars=false) 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.
size_t 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
bool m_resolveEnvVars

Friends

std::istream & operator>> (std::istream &stream, SessionSettings &s) throw ( ConfigError )
std::ostream & operator<< (std::ostream &stream, const SessionSettings &s)

Detailed Description

Container for setting dictionaries mapped to sessions.

Definition at line 220 of file SessionSettings.h.

Member Typedef Documentation

◆ Dictionaries

Definition at line 243 of file SessionSettings.h.

Constructor & Destructor Documentation

◆ SessionSettings() [1/3]

FIX::SessionSettings::SessionSettings ( )
inline

Definition at line 223 of file SessionSettings.h.

223{ m_resolveEnvVars = false; }

References m_resolveEnvVars.

Referenced by operator<<, and operator>>.

◆ SessionSettings() [2/3]

FIX::SessionSettings::SessionSettings ( std::istream & stream,
bool resolveEnvVars = false )
throw (ConfigError )

Definition at line 33 of file SessionSettings.cpp.

36{
37 stream >> *this;
38}
std::string resolveEnvVars(const std::string &str)
Definition Settings.cpp:65

References m_resolveEnvVars, and FIX::resolveEnvVars().

◆ SessionSettings() [3/3]

FIX::SessionSettings::SessionSettings ( const std::string & file,
bool resolveEnvVars = false )
throw (ConfigError )

Definition at line 40 of file SessionSettings.cpp.

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

References m_resolveEnvVars, and FIX::resolveEnvVars().

Member Function Documentation

◆ get() [1/2]

const Dictionary & FIX::SessionSettings::get ( ) const
inline

Get global default settings.

Definition at line 236 of file SessionSettings.h.

236{ return m_defaults; }

References get(), and m_defaults.

◆ get() [2/2]

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

Get a dictionary for a session.

Definition at line 127 of file SessionSettings.cpp.

129{
130 Dictionaries::const_iterator i;
131 i = m_settings.find( sessionID );
132 if ( i == m_settings.end() ) throw ConfigError( "Session not found" );
133 return i->second;
134}

References m_settings.

Referenced by get(), and operator<<.

◆ getSessions()

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

Definition at line 160 of file SessionSettings.cpp.

161{
162 std::set < SessionID > result;
163 Dictionaries::const_iterator i;
164 for ( i = m_settings.begin(); i != m_settings.end(); ++i )
165 result.insert( i->first );
166 return result;
167}

References m_settings.

Referenced by operator<<.

◆ has()

const bool FIX::SessionSettings::has ( const SessionID & sessionID) const

Check if session setings are present.

Definition at line 122 of file SessionSettings.cpp.

123{
124 return m_settings.find( sessionID ) != m_settings.end();
125}

References m_settings.

Referenced by set().

◆ set() [1/2]

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

Set global default settings.

Definition at line 152 of file SessionSettings.cpp.

153{
154 m_defaults = defaults;
155 Dictionaries::iterator i = m_settings.begin();
156 for( i = m_settings.begin(); i != m_settings.end(); ++i )
157 i->second.merge( defaults );
158}

References m_defaults, and m_settings.

◆ set() [2/2]

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

Set a dictionary for a session.

Definition at line 136 of file SessionSettings.cpp.

139{
140 if( has(sessionID) )
141 throw ConfigError( "Duplicate Session " + sessionID.toString() );
142
143 settings.setString( BEGINSTRING, sessionID.getBeginString() );
144 settings.setString( SENDERCOMPID, sessionID.getSenderCompID() );
145 settings.setString( TARGETCOMPID, sessionID.getTargetCompID() );
146
147 settings.merge( m_defaults );
148 validate( settings );
149 m_settings[ sessionID ] = settings;
150}
void validate(const Dictionary &) const
const bool has(const SessionID &) const
Check if session setings are present.
const char SENDERCOMPID[]
const char BEGINSTRING[]
const char TARGETCOMPID[]

References FIX::BEGINSTRING, has(), m_defaults, m_settings, FIX::SENDERCOMPID, FIX::TARGETCOMPID, and validate().

◆ size()

size_t FIX::SessionSettings::size ( ) const
inline

Number of session settings.

Definition at line 241 of file SessionSettings.h.

241{ return m_settings.size(); }

References m_settings.

◆ validate()

void FIX::SessionSettings::validate ( const Dictionary & dictionary) const
throw (ConfigError )
private

Definition at line 169 of file SessionSettings.cpp.

171{
172 std::string beginString = dictionary.getString( BEGINSTRING );
173 if( beginString != BeginString_FIX40 &&
174 beginString != BeginString_FIX41 &&
175 beginString != BeginString_FIX42 &&
176 beginString != BeginString_FIX43 &&
177 beginString != BeginString_FIX44 &&
178 beginString != BeginString_FIXT11 )
179 {
180 throw ConfigError( std::string(BEGINSTRING) + " must be FIX.4.0 to FIX.4.4 or FIXT.1.1" );
181 }
182
183 std::string connectionType = dictionary.getString( CONNECTION_TYPE );
184 if( connectionType != "initiator" &&
185 connectionType != "acceptor" )
186 {
187 throw ConfigError( std::string(CONNECTION_TYPE) + " must be 'initiator' or 'acceptor'" );
188 }
189}
const char BeginString_FIX41[]
Definition Values.h:35
const char BeginString_FIX40[]
Definition Values.h:36
const char BeginString_FIX42[]
Definition Values.h:34
const char CONNECTION_TYPE[]
const char BeginString_FIXT11[]
Definition Values.h:30
const char BeginString_FIX43[]
Definition Values.h:33
const char BeginString_FIX44[]
Definition Values.h:32

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.

Referenced by set().

◆ operator<<

std::ostream & operator<< ( std::ostream & stream,
const SessionSettings & s )
friend

Definition at line 89 of file SessionSettings.cpp.

90{
91 const Dictionary& defaults = s.m_defaults;
92 if( defaults.size() )
93 {
94 stream << "[DEFAULT]" << std::endl;
96 for( i = defaults.begin(); i != defaults.end(); ++i )
97 stream << i->first << "=" << i->second << std::endl;
98 stream << std::endl;
99 }
100
101 std::set<SessionID> sessions = s.getSessions();
102 std::set<SessionID>::iterator i;
103 for( i = sessions.begin(); i != sessions.end(); ++i )
104 {
105 stream << "[SESSION]" << std::endl;
106 const Dictionary& section = s.get( *i );
107 if( !section.size() ) continue;
108
110 for( i = section.begin(); i != section.end(); ++i )
111 {
112 if( defaults.has(i->first) && defaults.getString(i->first) == i->second )
113 continue;
114 stream << i->first << "=" << i->second << std::endl;
115 }
116 stream << std::endl;
117 }
118
119 return stream;
120}
Data::const_iterator iterator
Definition Dictionary.h:44

References FIX::Dictionary::begin(), FIX::Dictionary::end(), get(), getSessions(), FIX::Dictionary::getString(), FIX::Dictionary::has(), m_defaults, SessionSettings(), and FIX::Dictionary::size().

◆ operator>>

std::istream & operator>> ( std::istream & stream,
SessionSettings & s )
throw (ConfigError )
friend

Definition at line 50 of file SessionSettings.cpp.

52{
53 Settings settings(s.m_resolveEnvVars);
54 stream >> settings;
55
56 Settings::Sections section;
57
58 section = settings.get( "DEFAULT" );
59 Dictionary def;
60 if ( section.size() )
61 def = section[ 0 ];
62 s.set( def );
63
64 section = settings.get( "SESSION" );
65 Settings::Sections::size_type session;
66 Dictionary dict;
67
68 for ( session = 0; session < section.size(); ++session )
69 {
70 dict = section[ session ];
71 dict.merge( def );
72
73 BeginString beginString
74 ( dict.getString( BEGINSTRING ) );
75 SenderCompID senderCompID
76 ( dict.getString( SENDERCOMPID ) );
77 TargetCompID targetCompID
78 ( dict.getString( TARGETCOMPID ) );
79
80 std::string sessionQualifier;
81 if( dict.has( SESSION_QUALIFIER ) )
82 sessionQualifier = dict.getString( SESSION_QUALIFIER );
83 SessionID sessionID( beginString, senderCompID, targetCompID, sessionQualifier );
84 s.set( sessionID, dict );
85 }
86 return stream;
87}
std::vector< Dictionary > Sections
Definition Settings.h:43
const char SESSION_QUALIFIER[]

References FIX::BEGINSTRING, FIX::Settings::get(), FIX::Dictionary::getString(), FIX::Dictionary::has(), FIX::Dictionary::merge(), FIX::SENDERCOMPID, FIX::SESSION_QUALIFIER, SessionSettings(), and FIX::TARGETCOMPID.

Member Data Documentation

◆ m_defaults

Dictionary FIX::SessionSettings::m_defaults
private

Definition at line 250 of file SessionSettings.h.

Referenced by get(), operator<<, set(), and set().

◆ m_resolveEnvVars

bool FIX::SessionSettings::m_resolveEnvVars
private

Definition at line 251 of file SessionSettings.h.

Referenced by SessionSettings(), SessionSettings(), and SessionSettings().

◆ m_settings

Dictionaries FIX::SessionSettings::m_settings
private

Definition at line 249 of file SessionSettings.h.

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


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

Generated on for QuickFIX by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2001