[Quickfix-developers] ConfigError Duplicate Session...
Brought to you by:
orenmnero
From: Alexey Z. <ale...@in...> - 2009-01-06 22:18:40
|
Oren, Quickfix developers, I used to modify the settings parameters before running initiator/acceptor, but the new feature (revision 1966) throws ConfigError exception breaks that completely. That could be nice to have such a feature to modify parameters. Is there are chance to get a non const Dictionary& get() method or something? For example, I append the current date to the file paths, so the files are put into the write directory: m_settings = new FIX::SessionSettings(config_file); time_t ltime = time(0); struct tm *newtime = gmtime(<ime); const int DTSTRSIZE = 50; char timestr[DTSTRSIZE+1]; strftime(timestr, DTSTRSIZE, "\\%Y%m%d", newtime); typedef std::set<FIX::SessionID> TSessionsSet; TSessionsSet TheSet = m_settings->getSessions(); for(TSessionsSet::iterator it = TheSet.begin(); it != TheSet.end(); it++) { FIX::SessionID SessionID = *it; // that could be nice to get reference to the Dictionary instead here: FIX::Dictionary Dictionary = m_settings->get(SessionID); std::string path = Dictionary.getString(FIX::FILE_LOG_PATH); FIX::file_mkdir(path.c_str()); path += timestr; if(suffix) { path += suffix; } Dictionary.setString(FIX::FILE_LOG_PATH, path); path = Dictionary.getString(FIX::FILE_STORE_PATH); FIX::file_mkdir(path.c_str()); path += timestr; if(suffix) { path += suffix; } Dictionary.setString(FIX::FILE_STORE_PATH, path); // here is I got the exception :( m_settings->set(SessionID, Dictionary); } } m_factory = new FIX::QFMyFileStoreFactory(*m_settings); m_logFactory = new FIX::FileLogFactory(*m_settings); m_initiator = new FIX::ThreadedSocketInitiator(*this, *m_factory, *m_settings, *m_logFactory); ...... Thank you in advance. -- Regards, Alexey Zubko |