9 #include <boost/program_options/options_description.hpp> 10 #include <boost/program_options/parsers.hpp> 18 namespace bpo = boost::program_options;
35 ,
m_sid(boost::uuids::nil_uuid())
60 <<
"DDS configuration" 61 <<
" v" << USER_DEFAULTS_CFG_VERSION <<
"\n" 68 if (
nullptr == _options)
69 throw std::runtime_error(
"Internal error: options' container is empty.");
72 bpo::options_description options(
"dds-info options");
73 options.add_options()(
"help,h",
"Produce help message");
74 options.add_options()(
"version,v",
"Version information");
75 options.add_options()(
"session,s", bpo::value<std::string>(),
"DDS Session ID");
76 options.add_options()(
"commander-pid",
78 "Return the pid of the commander server");
79 options.add_options()(
"status",
81 "Query current status of DDS commander server");
82 options.add_options()(
"agents-list,l",
84 "Show detailed info about all online agents");
85 options.add_options()(
86 "prop-list", bpo::bool_switch(&_options->
m_bNeedPropList),
"Returns a property list from all agents.");
87 options.add_options()(
"prop-values",
89 "Returns a key-value pairs from all agents.");
90 options.add_options()(
"prop-name",
92 "Specify property names that have to be returned.");
93 options.add_options()(
"active-count,n",
95 "Returns a number of online agents.");
96 options.add_options()(
97 "idle-count", bpo::bool_switch(&_options->
m_bNeedIdleCount),
"Returns a number of idle agents.");
98 options.add_options()(
"executing-count",
100 "Returns a number of executing agents.");
101 options.add_options()(
"wait",
103 "The command will block infinitely until a required number of agents are available. " 104 "Must be used together with --active-count, --idle-count or --executing-count");
105 options.add_options()(
"active-topology",
107 "Returns the name of the active topology");
110 bpo::variables_map vm;
111 bpo::store(bpo::command_line_parser(_argc, _argv).options(options).run(), vm);
115 bpo::variables_map::const_iterator found =
116 find_if(vm.begin(), vm.end(), [](
const bpo::variables_map::value_type& _v) {
117 return (!_v.second.defaulted());
120 if (vm.count(
"help") || vm.end() == found)
125 if (vm.count(
"version"))
136 if (vm.count(
"session"))
137 _options->
m_sid = boost::uuids::string_generator()(vm[
"session"].as<std::string>());
144 <<
"--active-count, --idle-count, --executing-count can't be used together.";
150 if (vm.count(
"wait") && !needCount)
153 <<
"Option --wait must be used together with --active-count, --idle-count or --executing-count.";
dds-commander's container of options
Definition: dds-info/src/Options.h:25
void PrintVersion()
Definition: dds-info/src/Options.h:57
bool m_bNeedIdleCount
Definition: dds-info/src/Options.h:52
bool m_bNeedAgentsList
Definition: dds-info/src/Options.h:45
bool m_bNeedActiveTopology
Definition: dds-info/src/Options.h:48
#define LOG(severity)
Definition: Logger.h:56
boost::uuids::uuid m_sid
Definition: dds-info/src/Options.h:50
const LPCSTR g_cszReportBugsAddr("Report bugs/comments to fairroot@gsi.de")
Definition: AgentConnectionManager.h:13
bool m_bNeedPropValues
Definition: dds-info/src/Options.h:47
bool m_bNeedActiveCount
Definition: dds-info/src/Options.h:51
bool m_bNeedDDSStatus
Definition: dds-info/src/Options.h:44
SOptions()
Definition: dds-info/src/Options.h:27
bool m_bNeedPropList
Definition: dds-info/src/Options.h:46
struct dds::info_cmd::SOptions SOptions_t
dds-commander's container of options
bool m_bNeedExecutingCount
Definition: dds-info/src/Options.h:53
int m_nWaitCount
Definition: dds-info/src/Options.h:54
bool m_bNeedCommanderPid
Definition: dds-info/src/Options.h:43
std::string m_propertyName
Definition: dds-info/src/Options.h:49
bool ParseCmdLine(int _argc, char *_argv[], SOptions *_options)
Definition: dds-info/src/Options.h:66