/*************** MAIN *********************/ int main (int argc, char *argv[]) { QApplication q_app (argc, argv); PacmanVision pacv_app; QObject::connect(&q_app, SIGNAL( aboutToQuit() ), &pacv_app, SLOT( onShutdown())); if (pacv_app.init(argc, argv)) return q_app.exec(); else return 1; }
int main(int argC, char** argV) { QCoreApplication q_app(argC, argV); UniPAX::SERVER::RESTServer server; QDir pluginsDir = QDir(qApp->applicationDirPath()); pluginsDir.cdUp(); pluginsDir.cd("plugins"); server.addPluginsDirectory(pluginsDir.absolutePath().toStdString()); server.loadPlugins(); std::string help, service_name; std::string unipax_arg; std::string unipax_pw; int port = 8888; std::string interface = std::string("*"); boost::program_options::options_description general("General options"); general.add_options() ("help", "produce this help messages") ("help-plugin", boost::program_options::value< std::string >(&help), "produces help for given plugin name") ("help-plugins", "produces help for all plugins") ("port,P", boost::program_options::value< int >(&port)->default_value(8888), "port of the REST server") ("interface,I", boost::program_options::value< std::string >(&interface), "ip address of the REST server") ("rebuild-query-index", "Rebuild query engine index") ("disable-caching,d", "disables caching of loaded objects") ("password", boost::program_options::value< std::string >(&unipax_pw), "Password for UniPAX database connection") #ifdef ODB_MYSQL ("unipax,u", boost::program_options::value< std::string >(&unipax_arg), "UniPAX database connection in format: username@hostname[:port]/dbname") #elif defined ODB_ORACLE ("unipax,u", boost::program_options::value< std::string >(&unipax_arg), "UniPAX database connection in format: username@hostname[:port]/sid") ("db-service-name,s", boost::program_options::value< std::string >(&service_name)->default_value(""), "Service name of the UniPAX database, if different from SID") #endif ; boost::program_options::positional_options_description general_pod; general_pod.add("unipax", 1); general_pod.add("port", 2); boost::program_options::options_description all("Allowed options"); all.add(general); for (std::vector<UniPAX::SERVER::RESTServerHandler*>::const_iterator it = server.getPlugins().begin(); it != server.getPlugins().end(); ++it) { all.add((*it)->options()); } boost::program_options::variables_map vm; boost::program_options::store(boost::program_options::command_line_parser(argC, argV).options(all).positional(general_pod).run(), vm); boost::program_options::notify(vm); if (vm.count("help-plugins")) { std::cout << all << std::endl; return 0; } if (vm.count("help-plugin")) { for (std::vector<UniPAX::SERVER::RESTServerHandler*>::const_iterator it = server.getPlugins().begin(); it != server.getPlugins().end(); ++it) { if ((*it)->name() == QString::fromStdString(help)) { std::cout << (*it)->options() << std::endl; return 0; } } std::cout << "Unknown plugin " << help << std::endl; return 0; } if (vm.count("help") || !vm.count("unipax") || !vm.count("port")) { std::cout << general << std::endl; return 0; } std::string unipax_host; std::string unipax_user; std::string unipax_database; #ifdef ODB_MYSQL int unipax_port = 3306; #elif defined ODB_ORACLE int unipax_port = 1521; #endif std::size_t pos = 0; if ( (pos = unipax_arg.find_first_of('@')) != unipax_arg.npos) { unipax_user = unipax_arg.substr(0, pos); unipax_arg = unipax_arg.substr(pos + 1); } else { std::cerr << "UniPAX username not found" << std::endl; return -1; } if ( (pos = unipax_arg.find_first_of(':')) != unipax_arg.npos) { unipax_host = unipax_arg.substr(0, pos); unipax_arg = unipax_arg.substr(pos + 1); if ( (pos = unipax_arg.find_first_of('/')) != unipax_arg.npos) { std::stringstream ss; ss << unipax_arg.substr(0, pos); ss >> unipax_port; unipax_arg = unipax_arg.substr(pos + 1); } else