void SessionFactory::processFixtDataDictionaries(const SessionID& sessionID, const Dictionary& settings, DataDictionaryProvider& provider) throw(ConfigError) { DataDictionary dataDictionary = createDataDictionary(sessionID, settings, TRANSPORT_DATA_DICTIONARY); provider.addTransportDataDictionary(sessionID.getBeginString(), dataDictionary); for(Dictionary::const_iterator data = settings.begin(); data != settings.end(); ++data) { const std::string& key = data->first; const std::string frontKey = key.substr(0, strlen(APP_DATA_DICTIONARY)); if( frontKey == string_toUpper(APP_DATA_DICTIONARY) ) { if( key == string_toUpper(APP_DATA_DICTIONARY) ) { DataDictionary dataDictionary = createDataDictionary(sessionID, settings, APP_DATA_DICTIONARY); provider.addApplicationDataDictionary(Message::toApplVerID(settings.getString(DEFAULT_APPLVERID)), dataDictionary); } else { std::string::size_type offset = key.find('.'); if( offset == std::string::npos ) throw ConfigError(std::string("Malformed ") + APP_DATA_DICTIONARY + ": " + key); std::string beginStringQualifier = key.substr(offset+1); DataDictionary dataDictionary = createDataDictionary(sessionID, settings, key); provider.addApplicationDataDictionary(Message::toApplVerID(beginStringQualifier), dataDictionary); } } } }
void SessionFactory::processFixDataDictionary(const SessionID& sessionID, const Dictionary& settings, DataDictionaryProvider& provider) throw(ConfigError) { const DataDictionary * pDataDictionary = createDataDictionary(sessionID, settings, DATA_DICTIONARY); provider.addTransportDataDictionary(sessionID.getBeginString(), pDataDictionary); provider.addApplicationDataDictionary(Message::toApplVerID(sessionID.getBeginString()), pDataDictionary); }