FileStore.h
Go to the documentation of this file.
/* -*- C++ -*- */
/****************************************************************************
** Copyright (c) 2001-2014
**
** 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;
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;
};
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:
#ifdef _MSC_VER
typedef std::pair < int, int > OffsetSize;
#else
typedef std::pair < long, std::size_t > OffsetSize;
#endif
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
MessageStore.h
SessionSettings.h
FIX::FileStoreFactory
Creates a file based implementation of MessageStore.
Definition FileStore.h:40
FIX::FileStoreFactory::create
MessageStore * create(const SessionID &)
Definition FileStore.cpp:177
FIX::FileStoreFactory::m_settings
SessionSettings m_settings
Definition FileStore.h:51
FIX::FileStoreFactory::FileStoreFactory
FileStoreFactory(const SessionSettings &settings)
Definition FileStore.h:42
FIX::FileStoreFactory::m_path
std::string m_path
Definition FileStore.h:50
FIX::FileStoreFactory::FileStoreFactory
FileStoreFactory(const std::string &path)
Definition FileStore.h:44
FIX::FileStoreFactory::destroy
void destroy(MessageStore *)
Definition FileStore.cpp:187
FIX::FileStore
File based implementation of MessageStore.
Definition FileStore.h:82
FIX::FileStore::refresh
void refresh()
Definition FileStore.cpp:289
FIX::FileStore::m_headerFile
FILE * m_headerFile
Definition FileStore.h:127
FIX::FileStore::m_seqNumsFileName
std::string m_seqNumsFileName
Definition FileStore.h:123
FIX::FileStore::setNextSenderMsgSeqNum
void setNextSenderMsgSeqNum(int value)
Definition FileStore.cpp:246
FIX::FileStore::getCreationTime
UtcTimeStamp getCreationTime() const
Definition FileStore.cpp:270
FIX::FileStore::getNextSenderMsgSeqNum
int getNextSenderMsgSeqNum() const
Definition FileStore.cpp:236
FIX::FileStore::OffsetSize
std::pair< long, std::size_t > OffsetSize
Definition FileStore.h:106
FIX::FileStore::m_sessionFile
FILE * m_sessionFile
Definition FileStore.h:129
FIX::FileStore::m_seqNumsFile
FILE * m_seqNumsFile
Definition FileStore.h:128
FIX::FileStore::incrNextSenderMsgSeqNum
void incrNextSenderMsgSeqNum()
Definition FileStore.cpp:258
FIX::FileStore::setSession
void setSession()
Definition FileStore.cpp:313
FIX::FileStore::incrNextTargetMsgSeqNum
void incrNextTargetMsgSeqNum()
Definition FileStore.cpp:264
FIX::FileStore::m_sessionFileName
std::string m_sessionFileName
Definition FileStore.h:124
FIX::FileStore::open
void open(bool deleteFile)
Definition FileStore.cpp:79
FIX::FileStore::populateCache
void populateCache()
Definition FileStore.cpp:126
FIX::FileStore::m_headerFileName
std::string m_headerFileName
Definition FileStore.h:122
FIX::FileStore::get
void get(int, int, std::vector< std::string > &) const
Definition FileStore.cpp:223
FIX::FileStore::~FileStore
virtual ~FileStore()
Definition FileStore.cpp:71
FIX::FileStore::reset
void reset()
Definition FileStore.cpp:275
FIX::FileStore::m_cache
MemoryStore m_cache
Definition FileStore.h:118
FIX::FileStore::setNextTargetMsgSeqNum
void setNextTargetMsgSeqNum(int value)
Definition FileStore.cpp:252
FIX::FileStore::m_msgFileName
std::string m_msgFileName
Definition FileStore.h:121
FIX::FileStore::setSeqNum
void setSeqNum()
Definition FileStore.cpp:302
FIX::FileStore::NumToOffset
std::map< int, OffsetSize > NumToOffset
Definition FileStore.h:108
FIX::FileStore::m_msgFile
FILE * m_msgFile
Definition FileStore.h:126
FIX::FileStore::readFromFile
bool readFromFile(int offset, int size, std::string &msg)
FIX::FileStore::m_offsets
NumToOffset m_offsets
Definition FileStore.h:119
FIX::FileStore::set
bool set(int, const std::string &)
Definition FileStore.cpp:192
FIX::FileStore::getNextTargetMsgSeqNum
int getNextTargetMsgSeqNum() const
Definition FileStore.cpp:241
FIX::MemoryStore
Memory based implementation of MessageStore.
Definition MessageStore.h:97
FIX::MessageStoreFactory
This interface must be implemented to create a MessageStore.
Definition MessageStore.h:42
FIX::MessageStore
This interface must be implemented to store and retrieve messages and sequence numbers.
Definition MessageStore.h:67
FIX::SessionID
Unique session id consists of BeginString, SenderCompID and TargetCompID.
Definition SessionID.h:31
FIX::SessionSettings
Container for setting dictionaries mapped to sessions.
Definition SessionSettings.h:221
FIX::UtcTimeStamp
Date and Time represented in UTC.
Definition FieldTypes.h:583
FIX
Definition Acceptor.cpp:35
FIX::IOException
IO Error.
Definition Exceptions.h:239