9 #ifndef RTCTK_COMPONENTFRAMEWORK_DETAIL_RTCCOMPONENT_HPP
10 #define RTCTK_COMPONENTFRAMEWORK_DETAIL_RTCCOMPONENT_HPP
12 #include <mal/Cii.hpp>
13 #include <boost/program_options.hpp>
14 #include <boost/core/demangle.hpp>
23 :
std::runtime_error(help_text) {}
30 :
std::runtime_error(
"Mandatory argument '" + arg_name +
"' not set, use -h for help") {}
36 Args(
int argc,
char** argv)
44 return vm[
"cid"].as<std::string>();
48 return vm[
"sde"].as<elt::mal::Uri>();
52 if (vm.count(
"lpf")) {
53 return {vm[
"lpf"].as<elt::mal::Uri>()};
62 namespace bpo = boost::program_options;
63 using ::elt::mal::Uri;
65 bpo::positional_options_description pos_opts_desc;
66 pos_opts_desc.add(
"cid", 1);
67 pos_opts_desc.add(
"sde", 1);
69 bpo::options_description opts_desc(
"Options");
70 opts_desc.add_options()
71 (
"help,h",
"print help messages")
72 (
"cid,i", bpo::value<std::string>(),
"component identity")
73 (
"sde,s", bpo::value<Uri>(),
"service discovery endpoint")
74 (
"lpf,l", bpo::value<Uri>(),
"logging properties file");
77 bpo::command_line_parser(m_argc, m_argv)
79 .positional(pos_opts_desc)
84 if (vm.count(
"help")) {
86 ss << opts_desc << std::endl;
90 if (!vm.count(
"cid")) {
91 throw ArgNotSet(
"component identity");
94 if (!vm.count(
"sde")) {
95 throw ArgNotSet(
"service discovery endpoint");
102 boost::program_options::variables_map vm;
106 return boost::core::demangle(tid.name());