Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
FIX::SessionSettings Class Reference

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

#include <SessionSettings.h>

Collaboration diagram for FIX::SessionSettings:
Collaboration graph
[legend]

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 &, SessionSettings &) throw ( ConfigError )
 
std::ostream & operator<< (std::ostream &, const SessionSettings &)
 

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.

◆ 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}
void set(const SessionID &, Dictionary)
Set a dictionary for a session.
std::string resolveEnvVars(const std::string &str)
Definition Settings.cpp:65

◆ 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}

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 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}

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

◆ 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, and set().

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

◆ 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 FIX::Dictionary::end(), m_settings, and set().

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

◆ 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{
155 Dictionaries::iterator i = m_settings.begin();
156 for( i = m_settings.begin(); i != m_settings.end(); ++i )
157 i->second.merge( defaults );
158}
iterator begin() const
Definition Dictionary.h:84

◆ 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 );
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, FIX::SENDERCOMPID, and FIX::TARGETCOMPID.

Referenced by getSessions(), and has().

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

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  ,
const SessionSettings  
)
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

◆ operator>>

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

Definition at line 50 of file SessionSettings.cpp.

52{
53 Settings settings(s.m_resolveEnvVars);
55
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
74 ( dict.getString( BEGINSTRING ) );
76 ( dict.getString( SENDERCOMPID ) );
78 ( dict.getString( TARGETCOMPID ) );
79
80 std::string sessionQualifier;
81 if( dict.has( SESSION_QUALIFIER ) )
84 s.set( sessionID, dict );
85 }
86 return stream;
87}
std::vector< Dictionary > Sections
Definition Settings.h:43
const char SESSION_QUALIFIER[]

Member Data Documentation

◆ m_defaults

Dictionary FIX::SessionSettings::m_defaults
private

Definition at line 250 of file SessionSettings.h.

Referenced by get().

◆ m_resolveEnvVars

bool FIX::SessionSettings::m_resolveEnvVars
private

Definition at line 251 of file SessionSettings.h.

Referenced by SessionSettings().

◆ m_settings

Dictionaries FIX::SessionSettings::m_settings
private

Definition at line 249 of file SessionSettings.h.

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


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

Generated on Fri Sep 27 2024 13:45:21 for QuickFIX by doxygen 1.9.8 written by Dimitri van Heesch, © 1997-2001