owlps/owlps-positioning/owlps-positioning.cc

65 lines
2.4 KiB
C++

#include "owlps-positioning.hh"
int main(int argc, char** argv)
{
string config_filename = DEFAULT_CONFIG_FILE;
int port, mport;
/* Options spécifiques à la ligne de commandes */
po::options_description generic("Options générales ");
generic.add_options()
("help,h", "Affichage de l'aide")
("config-file,f", po::value<string>(), "Fichier de configuration")
("input-topo,T", po::value<string>(), "Input file topology")
("input-waypoint,W", po::value<string>(), "Input file waypoint")
("input-refpoint,R", po::value<string>(), "Input file reference point")
("input-ap,A", po::value<string>(), "Input file accesspoint")
;
/* Options ligne de commandes & fichier de configuration */
po::options_description config("Paramètres ");
config.add_options()
("server.port,l", po::value<int>(&port) -> default_value(9902), "Port d'écoute du serveur")
("server.mobile-port,p", po::value<int>(&mport) -> default_value(9903), "Port d'envoi vers le mobile")
("db.name,D", po::value<string>(), "Nom de la base de données à utiliser")
("db.host,H", po::value<string>(), "Adresse de l'hôte hébergeant la base de données")
("db.user,U", po::value<string>(), "Nom de l'utilisateur pour la connexion à la base de données")
("db.passwd,P", po::value<string>(), "Mot de passe pour la connexion à la base de données")
;
/* Total des options acceptées en ligne de commandes */
po::options_description cmd_line_options("Options acceptées ") ;
cmd_line_options.add(generic).add(config) ;
/* Parcours de la ligne de commandes */
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, cmd_line_options), vm) ;
if (vm.count("help")) // L'utilisateur a demandé l'aide
{
cout << cmd_line_options << endl ;
return 0 ;
}
if (vm.count("config-file")) // L'utilisateur a spécifié un fichier de config
config_filename = vm["config-file"].as<string>() ;
ifstream ifs(config_filename.c_str());
if (!ifs.is_open())
cerr << "Attention ! Erreur lors de l'ouverture du fichier de configuration « " << config_filename << " » : le fichier n'existe pas ou ne peut être lu.\nUtilisation des valeurs par défaut..." << endl ;
else // Parcours du fichier de config
po::store(po::parse_config_file(ifs, config), vm) ;
po::notify(vm);
Server server(port, mport);
if (server.init(vm))
return 1 ;
server.start();
return 0;
}