quickfix_ruby 1.14.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. data/ext/quickfix/Acceptor.cpp +248 -0
  3. data/ext/quickfix/Acceptor.h +127 -0
  4. data/ext/quickfix/Allocator.h +9 -0
  5. data/ext/quickfix/Application.h +127 -0
  6. data/ext/quickfix/AtomicCount.h +109 -0
  7. data/ext/quickfix/DOMDocument.h +74 -0
  8. data/ext/quickfix/DataDictionary.cpp +618 -0
  9. data/ext/quickfix/DataDictionary.h +539 -0
  10. data/ext/quickfix/DataDictionaryProvider.cpp +71 -0
  11. data/ext/quickfix/DataDictionaryProvider.h +70 -0
  12. data/ext/quickfix/DatabaseConnectionID.h +105 -0
  13. data/ext/quickfix/DatabaseConnectionPool.h +91 -0
  14. data/ext/quickfix/Dictionary.cpp +162 -0
  15. data/ext/quickfix/Dictionary.h +94 -0
  16. data/ext/quickfix/Event.h +95 -0
  17. data/ext/quickfix/Exceptions.h +299 -0
  18. data/ext/quickfix/Field.h +672 -0
  19. data/ext/quickfix/FieldConvertors.h +863 -0
  20. data/ext/quickfix/FieldMap.cpp +238 -0
  21. data/ext/quickfix/FieldMap.h +244 -0
  22. data/ext/quickfix/FieldNumbers.h +46 -0
  23. data/ext/quickfix/FieldTypes.cpp +64 -0
  24. data/ext/quickfix/FieldTypes.h +698 -0
  25. data/ext/quickfix/Fields.h +31 -0
  26. data/ext/quickfix/FileLog.cpp +200 -0
  27. data/ext/quickfix/FileLog.h +112 -0
  28. data/ext/quickfix/FileStore.cpp +332 -0
  29. data/ext/quickfix/FileStore.h +129 -0
  30. data/ext/quickfix/FixFieldNumbers.h +1537 -0
  31. data/ext/quickfix/FixFields.h +1538 -0
  32. data/ext/quickfix/FixValues.h +3281 -0
  33. data/ext/quickfix/FlexLexer.h +188 -0
  34. data/ext/quickfix/Group.cpp +64 -0
  35. data/ext/quickfix/Group.h +73 -0
  36. data/ext/quickfix/HtmlBuilder.h +186 -0
  37. data/ext/quickfix/HttpConnection.cpp +739 -0
  38. data/ext/quickfix/HttpConnection.h +78 -0
  39. data/ext/quickfix/HttpMessage.cpp +149 -0
  40. data/ext/quickfix/HttpMessage.h +133 -0
  41. data/ext/quickfix/HttpParser.cpp +49 -0
  42. data/ext/quickfix/HttpParser.h +54 -0
  43. data/ext/quickfix/HttpServer.cpp +169 -0
  44. data/ext/quickfix/HttpServer.h +78 -0
  45. data/ext/quickfix/Initiator.cpp +289 -0
  46. data/ext/quickfix/Initiator.h +149 -0
  47. data/ext/quickfix/Log.cpp +77 -0
  48. data/ext/quickfix/Log.h +179 -0
  49. data/ext/quickfix/Message.cpp +580 -0
  50. data/ext/quickfix/Message.h +370 -0
  51. data/ext/quickfix/MessageCracker.h +188 -0
  52. data/ext/quickfix/MessageSorters.cpp +105 -0
  53. data/ext/quickfix/MessageSorters.h +156 -0
  54. data/ext/quickfix/MessageStore.cpp +146 -0
  55. data/ext/quickfix/MessageStore.h +174 -0
  56. data/ext/quickfix/Mutex.h +131 -0
  57. data/ext/quickfix/MySQLConnection.h +194 -0
  58. data/ext/quickfix/MySQLLog.cpp +275 -0
  59. data/ext/quickfix/MySQLLog.h +145 -0
  60. data/ext/quickfix/MySQLStore.cpp +331 -0
  61. data/ext/quickfix/MySQLStore.h +142 -0
  62. data/ext/quickfix/NullStore.cpp +54 -0
  63. data/ext/quickfix/NullStore.h +99 -0
  64. data/ext/quickfix/OdbcConnection.h +266 -0
  65. data/ext/quickfix/OdbcLog.cpp +252 -0
  66. data/ext/quickfix/OdbcLog.h +117 -0
  67. data/ext/quickfix/OdbcStore.cpp +338 -0
  68. data/ext/quickfix/OdbcStore.h +113 -0
  69. data/ext/quickfix/PUGIXML_DOMDocument.cpp +112 -0
  70. data/ext/quickfix/PUGIXML_DOMDocument.h +81 -0
  71. data/ext/quickfix/Parser.cpp +103 -0
  72. data/ext/quickfix/Parser.h +57 -0
  73. data/ext/quickfix/PostgreSQLConnection.h +176 -0
  74. data/ext/quickfix/PostgreSQLLog.cpp +276 -0
  75. data/ext/quickfix/PostgreSQLLog.h +144 -0
  76. data/ext/quickfix/PostgreSQLStore.cpp +334 -0
  77. data/ext/quickfix/PostgreSQLStore.h +141 -0
  78. data/ext/quickfix/Queue.h +75 -0
  79. data/ext/quickfix/QuickfixRuby.cpp +252066 -0
  80. data/ext/quickfix/QuickfixRuby.h +34 -0
  81. data/ext/quickfix/Responder.h +43 -0
  82. data/ext/quickfix/Session.cpp +1487 -0
  83. data/ext/quickfix/Session.h +335 -0
  84. data/ext/quickfix/SessionFactory.cpp +274 -0
  85. data/ext/quickfix/SessionFactory.h +86 -0
  86. data/ext/quickfix/SessionID.h +170 -0
  87. data/ext/quickfix/SessionSettings.cpp +189 -0
  88. data/ext/quickfix/SessionSettings.h +171 -0
  89. data/ext/quickfix/SessionState.h +231 -0
  90. data/ext/quickfix/Settings.cpp +100 -0
  91. data/ext/quickfix/Settings.h +53 -0
  92. data/ext/quickfix/SharedArray.h +150 -0
  93. data/ext/quickfix/SocketAcceptor.cpp +222 -0
  94. data/ext/quickfix/SocketAcceptor.h +75 -0
  95. data/ext/quickfix/SocketConnection.cpp +238 -0
  96. data/ext/quickfix/SocketConnection.h +103 -0
  97. data/ext/quickfix/SocketConnector.cpp +116 -0
  98. data/ext/quickfix/SocketConnector.h +67 -0
  99. data/ext/quickfix/SocketInitiator.cpp +260 -0
  100. data/ext/quickfix/SocketInitiator.h +81 -0
  101. data/ext/quickfix/SocketMonitor.cpp +335 -0
  102. data/ext/quickfix/SocketMonitor.h +111 -0
  103. data/ext/quickfix/SocketServer.cpp +177 -0
  104. data/ext/quickfix/SocketServer.h +100 -0
  105. data/ext/quickfix/ThreadedSocketAcceptor.cpp +258 -0
  106. data/ext/quickfix/ThreadedSocketAcceptor.h +98 -0
  107. data/ext/quickfix/ThreadedSocketConnection.cpp +209 -0
  108. data/ext/quickfix/ThreadedSocketConnection.h +82 -0
  109. data/ext/quickfix/ThreadedSocketInitiator.cpp +268 -0
  110. data/ext/quickfix/ThreadedSocketInitiator.h +84 -0
  111. data/ext/quickfix/TimeRange.cpp +173 -0
  112. data/ext/quickfix/TimeRange.h +258 -0
  113. data/ext/quickfix/Utility.cpp +537 -0
  114. data/ext/quickfix/Utility.h +219 -0
  115. data/ext/quickfix/Values.h +62 -0
  116. data/ext/quickfix/config.h +0 -0
  117. data/ext/quickfix/config_windows.h +0 -0
  118. data/ext/quickfix/extconf.rb +12 -0
  119. data/ext/quickfix/index.h +37 -0
  120. data/ext/quickfix/pugiconfig.hpp +72 -0
  121. data/ext/quickfix/pugixml.cpp +10765 -0
  122. data/ext/quickfix/pugixml.hpp +1341 -0
  123. data/ext/quickfix/strptime.h +7 -0
  124. data/lib/quickfix40.rb +274 -0
  125. data/lib/quickfix41.rb +351 -0
  126. data/lib/quickfix42.rb +1184 -0
  127. data/lib/quickfix43.rb +3504 -0
  128. data/lib/quickfix44.rb +10721 -0
  129. data/lib/quickfix50.rb +13426 -0
  130. data/lib/quickfix50sp1.rb +15629 -0
  131. data/lib/quickfix50sp2.rb +17068 -0
  132. data/lib/quickfix_fields.rb +19853 -0
  133. data/lib/quickfix_ruby.rb +82 -0
  134. data/lib/quickfixt11.rb +70 -0
  135. data/spec/FIX40.xml +862 -0
  136. data/spec/FIX41.xml +1285 -0
  137. data/spec/FIX42.xml +2746 -0
  138. data/spec/FIX43.xml +4229 -0
  139. data/spec/FIX44.xml +6596 -0
  140. data/spec/FIX50.xml +8137 -0
  141. data/spec/FIX50SP1.xml +9496 -0
  142. data/spec/FIX50SP2.xml +10011 -0
  143. data/spec/FIXT11.xml +313 -0
  144. data/test/test_DataDictionaryTestCase.rb +268 -0
  145. data/test/test_DictionaryTestCase.rb +112 -0
  146. data/test/test_FieldBaseTestCase.rb +24 -0
  147. data/test/test_MessageTestCase.rb +368 -0
  148. data/test/test_SessionSettingsTestCase.rb +41 -0
  149. metadata +193 -0
@@ -0,0 +1,170 @@
1
+ /* -*- C++ -*- */
2
+
3
+ /****************************************************************************
4
+ ** Copyright (c) 2001-2014
5
+ **
6
+ ** This file is part of the QuickFIX FIX Engine
7
+ **
8
+ ** This file may be distributed under the terms of the quickfixengine.org
9
+ ** license as defined by quickfixengine.org and appearing in the file
10
+ ** LICENSE included in the packaging of this file.
11
+ **
12
+ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13
+ ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14
+ **
15
+ ** See http://www.quickfixengine.org/LICENSE for licensing information.
16
+ **
17
+ ** Contact ask@quickfixengine.org if any conditions of this licensing are
18
+ ** not clear to you.
19
+ **
20
+ ****************************************************************************/
21
+
22
+ #ifndef FIX_SESSIONID_H
23
+ #define FIX_SESSIONID_H
24
+
25
+ #include "Fields.h"
26
+
27
+ namespace FIX
28
+ {
29
+ /// Unique session id consists of BeginString, SenderCompID and TargetCompID.
30
+ class SessionID
31
+ {
32
+ public:
33
+ SessionID()
34
+ {
35
+ toString(m_frozenString);
36
+ }
37
+
38
+ SessionID( const std::string& beginString,
39
+ const std::string& senderCompID,
40
+ const std::string& targetCompID,
41
+ const std::string& sessionQualifier = "" )
42
+ : m_beginString( BeginString(beginString) ),
43
+ m_senderCompID( SenderCompID(senderCompID) ),
44
+ m_targetCompID( TargetCompID(targetCompID) ),
45
+ m_sessionQualifier( sessionQualifier ),
46
+ m_isFIXT(false)
47
+ {
48
+ toString(m_frozenString);
49
+ if( beginString.substr(0, 4) == "FIXT" )
50
+ m_isFIXT = true;
51
+ }
52
+
53
+ const BeginString& getBeginString() const
54
+ { return m_beginString; }
55
+ const SenderCompID& getSenderCompID() const
56
+ { return m_senderCompID; }
57
+ const TargetCompID& getTargetCompID() const
58
+ { return m_targetCompID; }
59
+ const std::string& getSessionQualifier() const
60
+ { return m_sessionQualifier; }
61
+ const bool isFIXT() const
62
+ { return m_isFIXT; }
63
+
64
+ /// Get a string representation of the SessionID
65
+ std::string toString() const
66
+ {
67
+ return m_frozenString;
68
+ }
69
+
70
+ // Return a reference for a high-performance scenario
71
+ const std::string& toStringFrozen() const
72
+ {
73
+ return m_frozenString;
74
+ }
75
+
76
+ /// Build from string representation of SessionID
77
+ void fromString( const std::string& str )
78
+ {
79
+ std::string::size_type first =
80
+ str.find_first_of(':');
81
+ std::string::size_type second =
82
+ str.find("->");
83
+ std::string::size_type third =
84
+ str.find_last_of(':');
85
+ if( first == std::string::npos )
86
+ return;
87
+ if( second == std::string::npos )
88
+ return;
89
+ m_beginString = str.substr(0, first);
90
+ m_senderCompID = str.substr(first+1, second - first - 1);
91
+ if( first == third )
92
+ {
93
+ m_targetCompID = str.substr(second+2);
94
+ m_sessionQualifier = "";
95
+ }
96
+ else
97
+ {
98
+ m_targetCompID = str.substr(second+2, third - second - 2);
99
+ m_sessionQualifier = str.substr(third+1);
100
+ }
101
+ toString(m_frozenString);
102
+ }
103
+
104
+ /// Get a string representation without making a copy
105
+ std::string& toString( std::string& str ) const
106
+ {
107
+ str = getBeginString().getValue() + ":" +
108
+ getSenderCompID().getValue() + "->" +
109
+ getTargetCompID().getValue();
110
+ if( m_sessionQualifier.size() )
111
+ str += ":" + m_sessionQualifier;
112
+ return str;
113
+ }
114
+
115
+ friend bool operator<( const SessionID&, const SessionID& );
116
+ friend bool operator==( const SessionID&, const SessionID& );
117
+ friend bool operator!=( const SessionID&, const SessionID& );
118
+ friend std::ostream& operator<<( std::ostream&, const SessionID& );
119
+ friend std::ostream& operator>>( std::ostream&, const SessionID& );
120
+
121
+ SessionID operator~() const
122
+ {
123
+ return SessionID( m_beginString, SenderCompID( m_targetCompID ),
124
+ TargetCompID( m_senderCompID ), m_sessionQualifier );
125
+ }
126
+
127
+ private:
128
+ BeginString m_beginString;
129
+ SenderCompID m_senderCompID;
130
+ TargetCompID m_targetCompID;
131
+ std::string m_sessionQualifier;
132
+ bool m_isFIXT;
133
+ std::string m_frozenString;
134
+ };
135
+ /*! @} */
136
+
137
+ inline bool operator<( const SessionID& lhs, const SessionID& rhs )
138
+ {
139
+ return lhs.toStringFrozen() < rhs.toStringFrozen();
140
+ }
141
+
142
+ inline bool operator==( const SessionID& lhs, const SessionID& rhs )
143
+ {
144
+ return lhs.toStringFrozen() == rhs.toStringFrozen();
145
+ }
146
+
147
+ inline bool operator!=( const SessionID& lhs, const SessionID& rhs )
148
+ {
149
+ return !( lhs == rhs );
150
+ }
151
+
152
+ inline std::ostream& operator<<
153
+ ( std::ostream& stream, const SessionID& sessionID )
154
+ {
155
+ stream << sessionID.toStringFrozen();
156
+ return stream;
157
+ }
158
+
159
+ inline std::istream& operator>>
160
+ ( std::istream& stream, SessionID& sessionID )
161
+ {
162
+ std::string str;
163
+ stream >> str;
164
+ sessionID.fromString( str );
165
+ return stream;
166
+ }
167
+
168
+ }
169
+ #endif //FIX_SESSIONID_H
170
+
@@ -0,0 +1,189 @@
1
+ /****************************************************************************
2
+ ** Copyright (c) 2001-2014
3
+ **
4
+ ** This file is part of the QuickFIX FIX Engine
5
+ **
6
+ ** This file may be distributed under the terms of the quickfixengine.org
7
+ ** license as defined by quickfixengine.org and appearing in the file
8
+ ** LICENSE included in the packaging of this file.
9
+ **
10
+ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11
+ ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12
+ **
13
+ ** See http://www.quickfixengine.org/LICENSE for licensing information.
14
+ **
15
+ ** Contact ask@quickfixengine.org if any conditions of this licensing are
16
+ ** not clear to you.
17
+ **
18
+ ****************************************************************************/
19
+
20
+ #ifdef _MSC_VER
21
+ #include "stdafx.h"
22
+ #else
23
+ #include "config.h"
24
+ #endif
25
+
26
+ #include "SessionSettings.h"
27
+ #include "Settings.h"
28
+ #include "Values.h"
29
+ #include <fstream>
30
+
31
+ namespace FIX
32
+ {
33
+ SessionSettings::SessionSettings( std::istream& stream )
34
+ throw( ConfigError )
35
+ {
36
+ stream >> *this;
37
+ }
38
+
39
+ SessionSettings::SessionSettings( const std::string& file )
40
+ throw( ConfigError )
41
+ {
42
+ std::ifstream fstream( file.c_str() );
43
+ if ( !fstream.is_open() )
44
+ throw ConfigError( ( "File " + file + " not found" ).c_str() );
45
+ fstream >> *this;
46
+ }
47
+
48
+ std::istream& operator>>( std::istream& stream, SessionSettings& s )
49
+ throw( ConfigError )
50
+ {
51
+ Settings settings;
52
+ stream >> settings;
53
+
54
+ Settings::Sections section;
55
+
56
+ section = settings.get( "DEFAULT" );
57
+ Dictionary def;
58
+ if ( section.size() )
59
+ def = section[ 0 ];
60
+ s.set( def );
61
+
62
+ section = settings.get( "SESSION" );
63
+ Settings::Sections::size_type session;
64
+ Dictionary dict;
65
+
66
+ for ( session = 0; session < section.size(); ++session )
67
+ {
68
+ dict = section[ session ];
69
+ dict.merge( def );
70
+
71
+ BeginString beginString
72
+ ( dict.getString( BEGINSTRING ) );
73
+ SenderCompID senderCompID
74
+ ( dict.getString( SENDERCOMPID ) );
75
+ TargetCompID targetCompID
76
+ ( dict.getString( TARGETCOMPID ) );
77
+
78
+ std::string sessionQualifier;
79
+ if( dict.has( SESSION_QUALIFIER ) )
80
+ sessionQualifier = dict.getString( SESSION_QUALIFIER );
81
+ SessionID sessionID( beginString, senderCompID, targetCompID, sessionQualifier );
82
+ s.set( sessionID, dict );
83
+ }
84
+ return stream;
85
+ }
86
+
87
+ std::ostream& operator<<( std::ostream& stream, const SessionSettings& s )
88
+ {
89
+ const Dictionary& defaults = s.m_defaults;
90
+ if( defaults.size() )
91
+ {
92
+ stream << "[DEFAULT]" << std::endl;
93
+ Dictionary::iterator i;
94
+ for( i = defaults.begin(); i != defaults.end(); ++i )
95
+ stream << i->first << "=" << i->second << std::endl;
96
+ stream << std::endl;
97
+ }
98
+
99
+ std::set<SessionID> sessions = s.getSessions();
100
+ std::set<SessionID>::iterator i;
101
+ for( i = sessions.begin(); i != sessions.end(); ++i )
102
+ {
103
+ stream << "[SESSION]" << std::endl;
104
+ const Dictionary& section = s.get( *i );
105
+ if( !section.size() ) continue;
106
+
107
+ Dictionary::iterator i;
108
+ for( i = section.begin(); i != section.end(); ++i )
109
+ {
110
+ if( defaults.has(i->first) && defaults.getString(i->first) == i->second )
111
+ continue;
112
+ stream << i->first << "=" << i->second << std::endl;
113
+ }
114
+ stream << std::endl;
115
+ }
116
+
117
+ return stream;
118
+ }
119
+
120
+ const bool SessionSettings::has( const SessionID& sessionID ) const
121
+ {
122
+ return m_settings.find( sessionID ) != m_settings.end();
123
+ }
124
+
125
+ const Dictionary& SessionSettings::get( const SessionID& sessionID ) const
126
+ throw( ConfigError )
127
+ {
128
+ Dictionaries::const_iterator i;
129
+ i = m_settings.find( sessionID );
130
+ if ( i == m_settings.end() ) throw ConfigError( "Session not found" );
131
+ return i->second;
132
+ }
133
+
134
+ void SessionSettings::set( const SessionID& sessionID,
135
+ Dictionary settings )
136
+ throw( ConfigError )
137
+ {
138
+ if( has(sessionID) )
139
+ throw ConfigError( "Duplicate Session " + sessionID.toString() );
140
+
141
+ settings.setString( BEGINSTRING, sessionID.getBeginString() );
142
+ settings.setString( SENDERCOMPID, sessionID.getSenderCompID() );
143
+ settings.setString( TARGETCOMPID, sessionID.getTargetCompID() );
144
+
145
+ settings.merge( m_defaults );
146
+ validate( settings );
147
+ m_settings[ sessionID ] = settings;
148
+ }
149
+
150
+ void SessionSettings::set( const Dictionary& defaults ) throw( ConfigError )
151
+ {
152
+ m_defaults = defaults;
153
+ Dictionaries::iterator i = m_settings.begin();
154
+ for( i = m_settings.begin(); i != m_settings.end(); ++i )
155
+ i->second.merge( defaults );
156
+ }
157
+
158
+ std::set < SessionID > SessionSettings::getSessions() const
159
+ {
160
+ std::set < SessionID > result;
161
+ Dictionaries::const_iterator i;
162
+ for ( i = m_settings.begin(); i != m_settings.end(); ++i )
163
+ result.insert( i->first );
164
+ return result;
165
+ }
166
+
167
+ void SessionSettings::validate( const Dictionary& dictionary ) const
168
+ throw( ConfigError )
169
+ {
170
+ std::string beginString = dictionary.getString( BEGINSTRING );
171
+ if( beginString != BeginString_FIX40 &&
172
+ beginString != BeginString_FIX41 &&
173
+ beginString != BeginString_FIX42 &&
174
+ beginString != BeginString_FIX43 &&
175
+ beginString != BeginString_FIX44 &&
176
+ beginString != BeginString_FIXT11 )
177
+ {
178
+ throw ConfigError( std::string(BEGINSTRING) + " must be FIX.4.0 to FIX.4.4 or FIXT.1.1" );
179
+ }
180
+
181
+ std::string connectionType = dictionary.getString( CONNECTION_TYPE );
182
+ if( connectionType != "initiator" &&
183
+ connectionType != "acceptor" )
184
+ {
185
+ throw ConfigError( std::string(CONNECTION_TYPE) + " must be 'initiator' or 'acceptor'" );
186
+ }
187
+ }
188
+
189
+ }
@@ -0,0 +1,171 @@
1
+ /* -*- C++ -*- */
2
+
3
+ /****************************************************************************
4
+ ** Copyright (c) 2001-2014
5
+ **
6
+ ** This file is part of the QuickFIX FIX Engine
7
+ **
8
+ ** This file may be distributed under the terms of the quickfixengine.org
9
+ ** license as defined by quickfixengine.org and appearing in the file
10
+ ** LICENSE included in the packaging of this file.
11
+ **
12
+ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13
+ ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14
+ **
15
+ ** See http://www.quickfixengine.org/LICENSE for licensing information.
16
+ **
17
+ ** Contact ask@quickfixengine.org if any conditions of this licensing are
18
+ ** not clear to you.
19
+ **
20
+ ****************************************************************************/
21
+
22
+ #ifndef FIX_SESSIONSETTINGS_H
23
+ #define FIX_SESSIONSETTINGS_H
24
+
25
+ #ifdef _MSC_VER
26
+ #pragma warning( disable : 4503 4355 4786 4290 )
27
+ #endif
28
+
29
+ #include "Dictionary.h"
30
+ #include "SessionID.h"
31
+ #include "Exceptions.h"
32
+ #include <map>
33
+ #include <set>
34
+
35
+ namespace FIX
36
+ {
37
+ const char BEGINSTRING[] = "BeginString";
38
+ const char SENDERCOMPID[] = "SenderCompID";
39
+ const char TARGETCOMPID[] = "TargetCompID";
40
+ const char SESSION_QUALIFIER[] = "SessionQualifier";
41
+ const char DEFAULT_APPLVERID[] = "DefaultApplVerID";
42
+ const char CONNECTION_TYPE[] = "ConnectionType";
43
+ const char USE_DATA_DICTIONARY[] = "UseDataDictionary";
44
+ const char SEND_RESETSEQNUMFLAG[] = "SendResetSeqNumFlag";
45
+ const char SEND_REDUNDANT_RESENDREQUESTS[] = "SendRedundantResendRequests";
46
+ const char DATA_DICTIONARY[] = "DataDictionary";
47
+ const char TRANSPORT_DATA_DICTIONARY[] = "TransportDataDictionary";
48
+ const char APP_DATA_DICTIONARY[] = "AppDataDictionary";
49
+ const char USE_LOCAL_TIME[] = "UseLocalTime";
50
+ const char START_TIME[] = "StartTime";
51
+ const char END_TIME[] = "EndTime";
52
+ const char START_DAY[] = "StartDay";
53
+ const char END_DAY[] = "EndDay";
54
+ const char LOGON_TIME[] = "LogonTime";
55
+ const char LOGOUT_TIME[] = "LogoutTime";
56
+ const char LOGON_DAY[] = "LogonDay";
57
+ const char LOGOUT_DAY[] = "LogoutDay";
58
+ const char CHECK_COMPID[] = "CheckCompID";
59
+ const char CHECK_LATENCY[] = "CheckLatency";
60
+ const char MAX_LATENCY[] = "MaxLatency";
61
+ const char HEARTBTINT[] = "HeartBtInt";
62
+ const char SOCKET_ACCEPT_PORT[] = "SocketAcceptPort";
63
+ const char SOCKET_REUSE_ADDRESS[] = "SocketReuseAddress";
64
+ const char SOCKET_CONNECT_HOST[] = "SocketConnectHost";
65
+ const char SOCKET_CONNECT_PORT[] = "SocketConnectPort";
66
+ const char SOCKET_NODELAY[] = "SocketNodelay";
67
+ const char SOCKET_SEND_BUFFER_SIZE[] = "SendBufferSize";
68
+ const char SOCKET_RECEIVE_BUFFER_SIZE[] = "ReceiveBufferSize";
69
+ const char RECONNECT_INTERVAL[] = "ReconnectInterval";
70
+ const char VALIDATE_LENGTH_AND_CHECKSUM[] = "ValidateLengthAndChecksum";
71
+ const char VALIDATE_FIELDS_OUT_OF_ORDER[] = "ValidateFieldsOutOfOrder";
72
+ const char VALIDATE_FIELDS_HAVE_VALUES[] = "ValidateFieldsHaveValues";
73
+ const char VALIDATE_USER_DEFINED_FIELDS[] = "ValidateUserDefinedFields";
74
+ const char LOGON_TIMEOUT[] = "LogonTimeout";
75
+ const char LOGOUT_TIMEOUT[] = "LogoutTimeout";
76
+ const char FILE_STORE_PATH[] = "FileStorePath";
77
+ const char MYSQL_STORE_USECONNECTIONPOOL[] = "MySQLStoreUseConnectionPool";
78
+ const char MYSQL_STORE_DATABASE[] = "MySQLStoreDatabase";
79
+ const char MYSQL_STORE_USER[] = "MySQLStoreUser";
80
+ const char MYSQL_STORE_PASSWORD[] = "MySQLStorePassword";
81
+ const char MYSQL_STORE_HOST[] = "MySQLStoreHost";
82
+ const char MYSQL_STORE_PORT[] = "MySQLStorePort";
83
+ const char POSTGRESQL_STORE_USECONNECTIONPOOL[] = "PostgreSQLStoreUseConnectionPool";
84
+ const char POSTGRESQL_STORE_DATABASE[] = "PostgreSQLStoreDatabase";
85
+ const char POSTGRESQL_STORE_USER[] = "PostgreSQLStoreUser";
86
+ const char POSTGRESQL_STORE_PASSWORD[] = "PostgreSQLStorePassword";
87
+ const char POSTGRESQL_STORE_HOST[] = "PostgreSQLStoreHost";
88
+ const char POSTGRESQL_STORE_PORT[] = "PostgreSQLStorePort";
89
+ const char ODBC_STORE_USER[] = "OdbcStoreUser";
90
+ const char ODBC_STORE_PASSWORD[] = "OdbcStorePassword";
91
+ const char ODBC_STORE_CONNECTION_STRING[] = "OdbcStoreConnectionString";
92
+ const char FILE_LOG_PATH[] = "FileLogPath";
93
+ const char FILE_LOG_BACKUP_PATH[] = "FileLogBackupPath";
94
+ const char SCREEN_LOG_SHOW_INCOMING[] = "ScreenLogShowIncoming";
95
+ const char SCREEN_LOG_SHOW_OUTGOING[] = "ScreenLogShowOutgoing";
96
+ const char SCREEN_LOG_SHOW_EVENTS[] = "ScreenLogShowEvents";
97
+ const char MYSQL_LOG_USECONNECTIONPOOL[] = "MySQLLogUseConnectionPool";
98
+ const char MYSQL_LOG_DATABASE[] = "MySQLLogDatabase";
99
+ const char MYSQL_LOG_USER[] = "MySQLLogUser";
100
+ const char MYSQL_LOG_PASSWORD[] = "MySQLLogPassword";
101
+ const char MYSQL_LOG_HOST[] = "MySQLLogHost";
102
+ const char MYSQL_LOG_PORT[] = "MySQLLogPort";
103
+ const char MYSQL_LOG_INCOMING_TABLE[] = "MySQLLogIncomingTable";
104
+ const char MYSQL_LOG_OUTGOING_TABLE[] = "MySQLLogOutgoingTable";
105
+ const char MYSQL_LOG_EVENT_TABLE[] = "MySQLLogEventTable";
106
+ const char POSTGRESQL_LOG_USECONNECTIONPOOL[] = "PostgreSQLLogUseConnectionPool";
107
+ const char POSTGRESQL_LOG_DATABASE[] = "PostgreSQLLogDatabase";
108
+ const char POSTGRESQL_LOG_USER[] = "PostgreSQLLogUser";
109
+ const char POSTGRESQL_LOG_PASSWORD[] = "PostgreSQLLogPassword";
110
+ const char POSTGRESQL_LOG_HOST[] = "PostgreSQLLogHost";
111
+ const char POSTGRESQL_LOG_PORT[] = "PostgreSQLLogPort";
112
+ const char POSTGRESQL_LOG_INCOMING_TABLE[] = "PostgreSQLLogIncomingTable";
113
+ const char POSTGRESQL_LOG_OUTGOING_TABLE[] = "PostgreSQLLogOutgoingTable";
114
+ const char POSTGRESQL_LOG_EVENT_TABLE[] = "PostgreSQLLogEventTable";
115
+ const char ODBC_LOG_USER[] = "OdbcLogUser";
116
+ const char ODBC_LOG_PASSWORD[] = "OdbcLogPassword";
117
+ const char ODBC_LOG_CONNECTION_STRING[] = "OdbcLogConnectionString";
118
+ const char ODBC_LOG_INCOMING_TABLE[] = "OdbcLogIncomingTable";
119
+ const char ODBC_LOG_OUTGOING_TABLE[] = "OdbcLogOutgoingTable";
120
+ const char ODBC_LOG_EVENT_TABLE[] = "OdbcLogEventTable";
121
+ const char RESET_ON_LOGON[] = "ResetOnLogon";
122
+ const char RESET_ON_LOGOUT[] = "ResetOnLogout";
123
+ const char RESET_ON_DISCONNECT[] = "ResetOnDisconnect";
124
+ const char REFRESH_ON_LOGON[] = "RefreshOnLogon";
125
+ const char MILLISECONDS_IN_TIMESTAMP[] = "MillisecondsInTimeStamp";
126
+ const char HTTP_ACCEPT_PORT[] = "HttpAcceptPort";
127
+ const char PERSIST_MESSAGES[] = "PersistMessages";
128
+
129
+ /// Container for setting dictionaries mapped to sessions.
130
+ class SessionSettings
131
+ {
132
+ public:
133
+ SessionSettings() {}
134
+ SessionSettings( std::istream& stream ) throw( ConfigError );
135
+ SessionSettings( const std::string& file ) throw( ConfigError );
136
+
137
+ /// Check if session setings are present
138
+ const bool has( const SessionID& ) const;
139
+
140
+ /// Get a dictionary for a session.
141
+ const Dictionary& get( const SessionID& ) const throw( ConfigError );
142
+ /// Set a dictionary for a session
143
+ void set( const SessionID&, Dictionary ) throw( ConfigError );
144
+
145
+ /// Get global default settings
146
+ const Dictionary& get() const { return m_defaults; }
147
+ /// Set global default settings
148
+ void set( const Dictionary& defaults ) throw( ConfigError );
149
+
150
+ /// Number of session settings
151
+ size_t size() const { return m_settings.size(); }
152
+
153
+ typedef std::map < SessionID, Dictionary > Dictionaries;
154
+ std::set < SessionID > getSessions() const;
155
+
156
+ private:
157
+ void validate( const Dictionary& ) const throw( ConfigError );
158
+
159
+ Dictionaries m_settings;
160
+ Dictionary m_defaults;
161
+
162
+ friend std::ostream& operator<<( std::ostream&, const SessionSettings& );
163
+ };
164
+ /*! @} */
165
+
166
+ std::istream& operator>>( std::istream&, SessionSettings& )
167
+ throw( ConfigError );
168
+ std::ostream& operator<<( std::ostream&, const SessionSettings& );
169
+ }
170
+
171
+ #endif //FIX_SESSIONSETTINGS_H