#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(), "Fichier de configuration") ("input-topo,T", po::value(), "Input file topology") ("input-waypoint,W", po::value(), "Input file waypoint") ("input-refpoint,R", po::value(), "Input file reference point") ("input-ap,A", po::value(), "Input file accesspoint") ; /* Options ligne de commandes & fichier de configuration */ po::options_description config("Paramètres "); config.add_options() ("server.port,l", po::value(&port) -> default_value(9902), "Port d'écoute du serveur") ("server.mobile-port,p", po::value(&mport) -> default_value(9903), "Port d'envoi vers le mobile") ("db.name,D", po::value(), "Nom de la base de données à utiliser") ("db.host,H", po::value(), "Adresse de l'hôte hébergeant la base de données") ("db.user,U", po::value(), "Nom de l'utilisateur pour la connexion à la base de données") ("db.passwd,P", po::value(), "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() ; 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; }