/usr/include/quickfix/FileStore.h is in libquickfix-dev 1.13.3+dfsg-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | /* -*- C++ -*- */
/****************************************************************************
** Copyright (c) quickfixengine.org All rights reserved.
**
** This file is part of the QuickFIX FIX Engine
**
** This file may be distributed under the terms of the quickfixengine.org
** license as defined by quickfixengine.org and appearing in the file
** LICENSE included in the packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.quickfixengine.org/LICENSE for licensing information.
**
** Contact ask@quickfixengine.org if any conditions of this licensing are
** not clear to you.
**
****************************************************************************/
#ifndef FIX_FILESTORE_H
#define FIX_FILESTORE_H
#ifdef _MSC_VER
#pragma warning( disable : 4503 4355 4786 4290 )
#endif
#include "MessageStore.h"
#include "SessionSettings.h"
#include <fstream>
#include <string>
namespace FIX
{
class Session;
/// Creates a file based implementation of MessageStore.
class FileStoreFactory : public MessageStoreFactory
{
public:
FileStoreFactory( const SessionSettings& settings )
: m_settings( settings ) {};
FileStoreFactory( const std::string& path )
: m_path( path ) {};
MessageStore* create( const SessionID& );
void destroy( MessageStore* );
private:
std::string m_path;
SessionSettings m_settings;
};
/*! @} */
/**
* File based implementation of MessageStore.
*
* Four files are created by this implementation. One for storing outgoing
* messages, one for indexing message locations, one for storing sequence numbers,
* and one for storing the session creation time.
*
* The formats of the files are:<br>
*
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].body<br>
*
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].header<br>
*
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].seqnums<br>
*
* [path]+[BeginString]-[SenderCompID]-[TargetCompID].session<br>
*
*
* The messages file is a pure stream of %FIX messages.<br><br>
* The sequence number file is in the format of<br>
*
* [SenderMsgSeqNum] : [TargetMsgSeqNum]<br><br>
* The session file is a UTC timestamp in the format of<br>
*
* YYYYMMDD-HH:MM:SS
*/
class FileStore : public MessageStore
{
public:
FileStore( std::string, const SessionID& s );
virtual ~FileStore();
bool set( int, const std::string& ) throw ( IOException );
void get( int, int, std::vector < std::string > & ) const throw ( IOException );
int getNextSenderMsgSeqNum() const throw ( IOException );
int getNextTargetMsgSeqNum() const throw ( IOException );
void setNextSenderMsgSeqNum( int value ) throw ( IOException );
void setNextTargetMsgSeqNum( int value ) throw ( IOException );
void incrNextSenderMsgSeqNum() throw ( IOException );
void incrNextTargetMsgSeqNum() throw ( IOException );
UtcTimeStamp getCreationTime() const throw ( IOException );
void reset() throw ( IOException );
void refresh() throw ( IOException );
private:
typedef std::pair < int, int > OffsetSize;
typedef std::map < int, OffsetSize > NumToOffset;
void open( bool deleteFile );
void populateCache();
bool readFromFile( int offset, int size, std::string& msg );
void setSeqNum();
void setSession();
bool get( int, std::string& ) const throw ( IOException );
MemoryStore m_cache;
NumToOffset m_offsets;
std::string m_msgFileName;
std::string m_headerFileName;
std::string m_seqNumsFileName;
std::string m_sessionFileName;
FILE* m_msgFile;
FILE* m_headerFile;
FILE* m_seqNumsFile;
FILE* m_sessionFile;
};
}
#endif //FIX_FILESTORE_H
|