65 lines
2.4 KiB
C++
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;
|
|
}
|