#include "logger.h" #include "settings.h" using SSMD::Settings; using SSMD::SettingsParser; SettingsParser::SettingsParser() : _desc("Allowed options") { // Declare the supported options. _desc.add_options() ("help", "produce help message") ("config,c", po::value()->default_value("/etc/gssmd/gssmd.conf"), "config file location") ("daemon,d", "daemonize after start") ("debug", "gssmd debugging") ("log-file", po::value(), "log file location") ("pid-file", po::value(), "PID file location") ("switch-sync-interval,s", po::value(), "switch synchronization interval") ("info-sync-interval,i", po::value(), "info synchronization interval") ("up-profile-id", po::value(), "switch's upload profile id") ("down-profile-id", po::value(), "switch's download profile id") ("max-acl-per-pdu", po::value(), "maximum ACL's per PDU") ("data-url", po::value(), "data access URL") ("version,v", "show gssmd version and exit") ; } void SettingsParser::init(int argc, char * argv[]) { po::variables_map vm; po::store(po::parse_command_line(argc, argv, _desc), vm); po::notify(vm); _settings._isHelp = vm.count("help"); _settings._isVersion = vm.count("version"); if (vm.count("config")) { _settings._configFile = vm["config"].as(); } if (!_settings._isHelp && !_settings._isVersion) { try { parseFile(_settings._configFile); } catch (std::exception & ex) { logger << "Error parsing config file '" << _settings._configFile << "': " << ex.what() << std::endl; } } if (vm.count("debug")) { _settings._isDebug = true; } if (vm.count("daemon")) { _settings._isDaemon = true; } if (vm.count("log-file")) { _settings._logFile = vm["log-file"].as(); } if (vm.count("pid-file")) { _settings._PIDFile = vm["pid-file"].as(); } if (vm.count("switch-sync-interval")) { _settings._switchSyncInterval = vm["switch-sync-interval"].as(); } if (vm.count("info-sync-interval")) { _settings._infoSyncInterval = vm["info-sync-interval"].as(); } if (vm.count("up-profile-id")) { _settings._upProfileId = vm["up-profile-id"].as(); } if (vm.count("down-profile-id")) { _settings._downProfileId = vm["down-profile-id"].as(); } if (vm.count("max-acl-per-pdu")) { _settings._downProfileId = vm["max-acl-per-pdu"].as(); } if (vm.count("data-url")) { _settings._dataURL = vm["data-url"].as(); } } void SettingsParser::reloadConfig() { parseFile(_settings._configFile); }