#ifndef FIX_DATADICTIONARYPROVIDER_H
#define FIX_DATADICTIONARYPROVIDER_H
#ifdef _MSC_VER
#pragma warning(disable : 4503 4355 4786 4290)
#endif
#include "DataDictionary.h"
#include "Exceptions.h"
#include "Utility.h"
namespace FIX {
class BeginString;
class ApplVerID;
class DataDictionaryProvider {
public:
DataDictionaryProvider() {}
DataDictionaryProvider(const DataDictionaryProvider ©);
const DataDictionary &getSessionDataDictionary(const BeginString &beginString) const EXCEPT(DataDictionaryNotFound);
const DataDictionary &getApplicationDataDictionary(const ApplVerID &applVerID) const EXCEPT(DataDictionaryNotFound);
void addTransportDataDictionary(const BeginString &beginString, std::shared_ptr<DataDictionary>);
void addApplicationDataDictionary(const ApplVerID &applVerID, std::shared_ptr<DataDictionary>);
void addTransportDataDictionary(const BeginString &beginString, const std::string &path) {
addTransportDataDictionary(beginString, std::shared_ptr<DataDictionary>(new DataDictionary(path)));
}
void addApplicationDataDictionary(const ApplVerID &applVerID, const std::string &path) {
addApplicationDataDictionary(applVerID, std::shared_ptr<DataDictionary>(new DataDictionary(path)));
}
private:
std::map<std::string, std::shared_ptr<DataDictionary>> m_transportDictionaries;
std::map<std::string, std::shared_ptr<DataDictionary>> m_applicationDictionaries;
DataDictionary emptyDataDictionary;
};
}
#endif