diff --git a/services/tunnelbroker/src/args.h b/services/tunnelbroker/src/args.h new file mode 100644 --- /dev/null +++ b/services/tunnelbroker/src/args.h @@ -0,0 +1,9 @@ +#pragma once + +namespace comm { +namespace tunnelbroker { + +void parseArgs(int, char **); + +} // namespace tunnelbroker +} // namespace comm diff --git a/services/tunnelbroker/src/args.cpp b/services/tunnelbroker/src/args.cpp new file mode 100644 --- /dev/null +++ b/services/tunnelbroker/src/args.cpp @@ -0,0 +1,31 @@ +#include "args.h" + +#include +#include + +namespace po = boost::program_options; + +namespace comm { +namespace tunnelbroker { + +void parseArgs(int argc, char *argv[]) { + try { + po::options_description desc("Tunnelbroker options"); + desc.add_options()("help,h", "Produce help message"); + + po::variables_map vm; + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + + if (vm.count("help")) { + std::cout << desc << "\n"; + std::exit(1); + } + } catch (std::exception &e) { + std::cerr << "error: " << e.what() << "\n"; + std::exit(1); + } +} + +} // namespace tunnelbroker +} // namespace comm diff --git a/services/tunnelbroker/src/server.cpp b/services/tunnelbroker/src/server.cpp --- a/services/tunnelbroker/src/server.cpp +++ b/services/tunnelbroker/src/server.cpp @@ -2,6 +2,7 @@ #include "ConfigManager.h" #include "GlobalTools.h" #include "TunnelbrokerServiceImpl.h" +#include "args.h" #include "GlobalConstants.h" @@ -35,6 +36,7 @@ } // namespace comm int main(int argc, char **argv) { + comm::tunnelbroker::parseArgs(argc, argv); comm::network::tools::InitLogging("tunnelbroker"); comm::network::config::ConfigManager::getInstance().load(); comm::network::AmqpManager::getInstance().init();