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.
- checksums.yaml +7 -0
- data/ext/quickfix/Acceptor.cpp +248 -0
- data/ext/quickfix/Acceptor.h +127 -0
- data/ext/quickfix/Allocator.h +9 -0
- data/ext/quickfix/Application.h +127 -0
- data/ext/quickfix/AtomicCount.h +109 -0
- data/ext/quickfix/DOMDocument.h +74 -0
- data/ext/quickfix/DataDictionary.cpp +618 -0
- data/ext/quickfix/DataDictionary.h +539 -0
- data/ext/quickfix/DataDictionaryProvider.cpp +71 -0
- data/ext/quickfix/DataDictionaryProvider.h +70 -0
- data/ext/quickfix/DatabaseConnectionID.h +105 -0
- data/ext/quickfix/DatabaseConnectionPool.h +91 -0
- data/ext/quickfix/Dictionary.cpp +162 -0
- data/ext/quickfix/Dictionary.h +94 -0
- data/ext/quickfix/Event.h +95 -0
- data/ext/quickfix/Exceptions.h +299 -0
- data/ext/quickfix/Field.h +672 -0
- data/ext/quickfix/FieldConvertors.h +863 -0
- data/ext/quickfix/FieldMap.cpp +238 -0
- data/ext/quickfix/FieldMap.h +244 -0
- data/ext/quickfix/FieldNumbers.h +46 -0
- data/ext/quickfix/FieldTypes.cpp +64 -0
- data/ext/quickfix/FieldTypes.h +698 -0
- data/ext/quickfix/Fields.h +31 -0
- data/ext/quickfix/FileLog.cpp +200 -0
- data/ext/quickfix/FileLog.h +112 -0
- data/ext/quickfix/FileStore.cpp +332 -0
- data/ext/quickfix/FileStore.h +129 -0
- data/ext/quickfix/FixFieldNumbers.h +1537 -0
- data/ext/quickfix/FixFields.h +1538 -0
- data/ext/quickfix/FixValues.h +3281 -0
- data/ext/quickfix/FlexLexer.h +188 -0
- data/ext/quickfix/Group.cpp +64 -0
- data/ext/quickfix/Group.h +73 -0
- data/ext/quickfix/HtmlBuilder.h +186 -0
- data/ext/quickfix/HttpConnection.cpp +739 -0
- data/ext/quickfix/HttpConnection.h +78 -0
- data/ext/quickfix/HttpMessage.cpp +149 -0
- data/ext/quickfix/HttpMessage.h +133 -0
- data/ext/quickfix/HttpParser.cpp +49 -0
- data/ext/quickfix/HttpParser.h +54 -0
- data/ext/quickfix/HttpServer.cpp +169 -0
- data/ext/quickfix/HttpServer.h +78 -0
- data/ext/quickfix/Initiator.cpp +289 -0
- data/ext/quickfix/Initiator.h +149 -0
- data/ext/quickfix/Log.cpp +77 -0
- data/ext/quickfix/Log.h +179 -0
- data/ext/quickfix/Message.cpp +580 -0
- data/ext/quickfix/Message.h +370 -0
- data/ext/quickfix/MessageCracker.h +188 -0
- data/ext/quickfix/MessageSorters.cpp +105 -0
- data/ext/quickfix/MessageSorters.h +156 -0
- data/ext/quickfix/MessageStore.cpp +146 -0
- data/ext/quickfix/MessageStore.h +174 -0
- data/ext/quickfix/Mutex.h +131 -0
- data/ext/quickfix/MySQLConnection.h +194 -0
- data/ext/quickfix/MySQLLog.cpp +275 -0
- data/ext/quickfix/MySQLLog.h +145 -0
- data/ext/quickfix/MySQLStore.cpp +331 -0
- data/ext/quickfix/MySQLStore.h +142 -0
- data/ext/quickfix/NullStore.cpp +54 -0
- data/ext/quickfix/NullStore.h +99 -0
- data/ext/quickfix/OdbcConnection.h +266 -0
- data/ext/quickfix/OdbcLog.cpp +252 -0
- data/ext/quickfix/OdbcLog.h +117 -0
- data/ext/quickfix/OdbcStore.cpp +338 -0
- data/ext/quickfix/OdbcStore.h +113 -0
- data/ext/quickfix/PUGIXML_DOMDocument.cpp +112 -0
- data/ext/quickfix/PUGIXML_DOMDocument.h +81 -0
- data/ext/quickfix/Parser.cpp +103 -0
- data/ext/quickfix/Parser.h +57 -0
- data/ext/quickfix/PostgreSQLConnection.h +176 -0
- data/ext/quickfix/PostgreSQLLog.cpp +276 -0
- data/ext/quickfix/PostgreSQLLog.h +144 -0
- data/ext/quickfix/PostgreSQLStore.cpp +334 -0
- data/ext/quickfix/PostgreSQLStore.h +141 -0
- data/ext/quickfix/Queue.h +75 -0
- data/ext/quickfix/QuickfixRuby.cpp +252066 -0
- data/ext/quickfix/QuickfixRuby.h +34 -0
- data/ext/quickfix/Responder.h +43 -0
- data/ext/quickfix/Session.cpp +1487 -0
- data/ext/quickfix/Session.h +335 -0
- data/ext/quickfix/SessionFactory.cpp +274 -0
- data/ext/quickfix/SessionFactory.h +86 -0
- data/ext/quickfix/SessionID.h +170 -0
- data/ext/quickfix/SessionSettings.cpp +189 -0
- data/ext/quickfix/SessionSettings.h +171 -0
- data/ext/quickfix/SessionState.h +231 -0
- data/ext/quickfix/Settings.cpp +100 -0
- data/ext/quickfix/Settings.h +53 -0
- data/ext/quickfix/SharedArray.h +150 -0
- data/ext/quickfix/SocketAcceptor.cpp +222 -0
- data/ext/quickfix/SocketAcceptor.h +75 -0
- data/ext/quickfix/SocketConnection.cpp +238 -0
- data/ext/quickfix/SocketConnection.h +103 -0
- data/ext/quickfix/SocketConnector.cpp +116 -0
- data/ext/quickfix/SocketConnector.h +67 -0
- data/ext/quickfix/SocketInitiator.cpp +260 -0
- data/ext/quickfix/SocketInitiator.h +81 -0
- data/ext/quickfix/SocketMonitor.cpp +335 -0
- data/ext/quickfix/SocketMonitor.h +111 -0
- data/ext/quickfix/SocketServer.cpp +177 -0
- data/ext/quickfix/SocketServer.h +100 -0
- data/ext/quickfix/ThreadedSocketAcceptor.cpp +258 -0
- data/ext/quickfix/ThreadedSocketAcceptor.h +98 -0
- data/ext/quickfix/ThreadedSocketConnection.cpp +209 -0
- data/ext/quickfix/ThreadedSocketConnection.h +82 -0
- data/ext/quickfix/ThreadedSocketInitiator.cpp +268 -0
- data/ext/quickfix/ThreadedSocketInitiator.h +84 -0
- data/ext/quickfix/TimeRange.cpp +173 -0
- data/ext/quickfix/TimeRange.h +258 -0
- data/ext/quickfix/Utility.cpp +537 -0
- data/ext/quickfix/Utility.h +219 -0
- data/ext/quickfix/Values.h +62 -0
- data/ext/quickfix/config.h +0 -0
- data/ext/quickfix/config_windows.h +0 -0
- data/ext/quickfix/extconf.rb +12 -0
- data/ext/quickfix/index.h +37 -0
- data/ext/quickfix/pugiconfig.hpp +72 -0
- data/ext/quickfix/pugixml.cpp +10765 -0
- data/ext/quickfix/pugixml.hpp +1341 -0
- data/ext/quickfix/strptime.h +7 -0
- data/lib/quickfix40.rb +274 -0
- data/lib/quickfix41.rb +351 -0
- data/lib/quickfix42.rb +1184 -0
- data/lib/quickfix43.rb +3504 -0
- data/lib/quickfix44.rb +10721 -0
- data/lib/quickfix50.rb +13426 -0
- data/lib/quickfix50sp1.rb +15629 -0
- data/lib/quickfix50sp2.rb +17068 -0
- data/lib/quickfix_fields.rb +19853 -0
- data/lib/quickfix_ruby.rb +82 -0
- data/lib/quickfixt11.rb +70 -0
- data/spec/FIX40.xml +862 -0
- data/spec/FIX41.xml +1285 -0
- data/spec/FIX42.xml +2746 -0
- data/spec/FIX43.xml +4229 -0
- data/spec/FIX44.xml +6596 -0
- data/spec/FIX50.xml +8137 -0
- data/spec/FIX50SP1.xml +9496 -0
- data/spec/FIX50SP2.xml +10011 -0
- data/spec/FIXT11.xml +313 -0
- data/test/test_DataDictionaryTestCase.rb +268 -0
- data/test/test_DictionaryTestCase.rb +112 -0
- data/test/test_FieldBaseTestCase.rb +24 -0
- data/test/test_MessageTestCase.rb +368 -0
- data/test/test_SessionSettingsTestCase.rb +41 -0
- metadata +193 -0
|
@@ -0,0 +1,129 @@
|
|
|
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_FILESTORE_H
|
|
23
|
+
#define FIX_FILESTORE_H
|
|
24
|
+
|
|
25
|
+
#ifdef _MSC_VER
|
|
26
|
+
#pragma warning( disable : 4503 4355 4786 4290 )
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#include "MessageStore.h"
|
|
30
|
+
#include "SessionSettings.h"
|
|
31
|
+
#include <fstream>
|
|
32
|
+
#include <string>
|
|
33
|
+
|
|
34
|
+
namespace FIX
|
|
35
|
+
{
|
|
36
|
+
class Session;
|
|
37
|
+
|
|
38
|
+
/// Creates a file based implementation of MessageStore.
|
|
39
|
+
class FileStoreFactory : public MessageStoreFactory
|
|
40
|
+
{
|
|
41
|
+
public:
|
|
42
|
+
FileStoreFactory( const SessionSettings& settings )
|
|
43
|
+
: m_settings( settings ) {};
|
|
44
|
+
FileStoreFactory( const std::string& path )
|
|
45
|
+
: m_path( path ) {};
|
|
46
|
+
|
|
47
|
+
MessageStore* create( const SessionID& );
|
|
48
|
+
void destroy( MessageStore* );
|
|
49
|
+
private:
|
|
50
|
+
std::string m_path;
|
|
51
|
+
SessionSettings m_settings;
|
|
52
|
+
};
|
|
53
|
+
/*! @} */
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* File based implementation of MessageStore.
|
|
57
|
+
*
|
|
58
|
+
* Four files are created by this implementation. One for storing outgoing
|
|
59
|
+
* messages, one for indexing message locations, one for storing sequence numbers,
|
|
60
|
+
* and one for storing the session creation time.
|
|
61
|
+
*
|
|
62
|
+
* The formats of the files are:<br>
|
|
63
|
+
*
|
|
64
|
+
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].body<br>
|
|
65
|
+
*
|
|
66
|
+
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].header<br>
|
|
67
|
+
*
|
|
68
|
+
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].seqnums<br>
|
|
69
|
+
*
|
|
70
|
+
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].session<br>
|
|
71
|
+
*
|
|
72
|
+
*
|
|
73
|
+
* The messages file is a pure stream of %FIX messages.<br><br>
|
|
74
|
+
* The sequence number file is in the format of<br>
|
|
75
|
+
*
|
|
76
|
+
* [SenderMsgSeqNum] : [TargetMsgSeqNum]<br><br>
|
|
77
|
+
* The session file is a UTC timestamp in the format of<br>
|
|
78
|
+
*
|
|
79
|
+
* YYYYMMDD-HH:MM:SS
|
|
80
|
+
*/
|
|
81
|
+
class FileStore : public MessageStore
|
|
82
|
+
{
|
|
83
|
+
public:
|
|
84
|
+
FileStore( std::string, const SessionID& s );
|
|
85
|
+
virtual ~FileStore();
|
|
86
|
+
|
|
87
|
+
bool set( int, const std::string& ) throw ( IOException );
|
|
88
|
+
void get( int, int, std::vector < std::string > & ) const throw ( IOException );
|
|
89
|
+
|
|
90
|
+
int getNextSenderMsgSeqNum() const throw ( IOException );
|
|
91
|
+
int getNextTargetMsgSeqNum() const throw ( IOException );
|
|
92
|
+
void setNextSenderMsgSeqNum( int value ) throw ( IOException );
|
|
93
|
+
void setNextTargetMsgSeqNum( int value ) throw ( IOException );
|
|
94
|
+
void incrNextSenderMsgSeqNum() throw ( IOException );
|
|
95
|
+
void incrNextTargetMsgSeqNum() throw ( IOException );
|
|
96
|
+
|
|
97
|
+
UtcTimeStamp getCreationTime() const throw ( IOException );
|
|
98
|
+
|
|
99
|
+
void reset() throw ( IOException );
|
|
100
|
+
void refresh() throw ( IOException );
|
|
101
|
+
|
|
102
|
+
private:
|
|
103
|
+
typedef std::pair < int, int > OffsetSize;
|
|
104
|
+
typedef std::map < int, OffsetSize > NumToOffset;
|
|
105
|
+
|
|
106
|
+
void open( bool deleteFile );
|
|
107
|
+
void populateCache();
|
|
108
|
+
bool readFromFile( int offset, int size, std::string& msg );
|
|
109
|
+
void setSeqNum();
|
|
110
|
+
void setSession();
|
|
111
|
+
|
|
112
|
+
bool get( int, std::string& ) const throw ( IOException );
|
|
113
|
+
|
|
114
|
+
MemoryStore m_cache;
|
|
115
|
+
NumToOffset m_offsets;
|
|
116
|
+
|
|
117
|
+
std::string m_msgFileName;
|
|
118
|
+
std::string m_headerFileName;
|
|
119
|
+
std::string m_seqNumsFileName;
|
|
120
|
+
std::string m_sessionFileName;
|
|
121
|
+
|
|
122
|
+
FILE* m_msgFile;
|
|
123
|
+
FILE* m_headerFile;
|
|
124
|
+
FILE* m_seqNumsFile;
|
|
125
|
+
FILE* m_sessionFile;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
#endif //FIX_FILESTORE_H
|