2 * @brief The updater class implementation. This class implements the updater logic.
6 * @copyright Intra2net AG
12 #include <boost/foreach.hpp>
17 * Default constructor which initializes the member Conf.
21 // Initialize program wide Logger, at this point we don't know where to log and with which loglevel.
22 Logger::Ptr _log(new Logger);
26 Config::Ptr _config(new Config(Log));
40 * Parse the command line arguments and initialize corresponding options.
41 * @param argc Number command line arguments.
42 * @param argv[] Array with arguments.
43 * @return 0 if cmd options successfully parsed, 1 if usage or version.
45 int Updater::init_config_from_cmd(int argc, char *argv[])
47 // Load the command line parameters
48 if( Conf->parse_cmd_line( argc, argv ) != 0)
51 // If we have loaded the cmd options we need to init the log facility immediately in case debugging is enabled from cmd.
55 Log->print_cmd_parsed();
61 * Load the main config and the service definition files in config path.
62 * @return 0 if all is fine,
64 int Updater::init_config_from_files()
66 // Load the main and service config files in config path
67 if ( Conf->load_config_from_files() != 0 )
70 // Re-init log facility, perhaps new config file options for logger are set.
71 // These config file options will only overwrite the cmd options if the SIGHUP (reload config) is caught.
74 // Here we are. All Service Objects should be initialized, so it is time to deserialize the old service objects and compare them.
75 if ( Conf->deserialize_services() != 0 )
79 Log->print_conf_files_parsed();
85 * Getter for member Config.
86 * @return Member Config.
88 Config::Ptr Updater::get_config()
95 * Getter for member Logger.
96 * @return Member Logger.
98 Logger::Ptr Updater::get_logger()
105 * Reloading the config. Delete all Service objects and then init new Service objects from config files.
107 int Updater::reload_config()
109 // serialize all service objects
110 if ( Conf->serialize_services() != 0 )
113 // delete all service objects
114 Conf->delete_services();
116 // delete the actual Variables_map, perhaps with old cmd options which would overwrite new config file options.
117 Conf->delete_variables_map();
119 // load only config files
120 if ( init_config_from_files() != 0 )
128 * Initialize the logging facility with loglevel and syslog.
130 void Updater::init_log_facility()
132 Log->set_log_facility(Conf->get_loglevel(),Conf->get_syslog());
133 Log->print_init_log_facility();
138 * Update all configured services.
140 void Updater::update_services()
142 list<Service::Ptr> services = this->Conf->get_services();
144 string ip = "192.168.1.1";
146 BOOST_FOREACH(Service::Ptr &service, services )