DDS  ver. 3.4
dds-test/src/Options.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 #ifndef DDS_TEST_OPTIONS_H
6 #define DDS_TEST_OPTIONS_H
7 //=============================================================================
8 // BOOST
9 #include <boost/program_options/options_description.hpp>
10 #include <boost/program_options/parsers.hpp>
11 // DDS
12 #include "ProtocolCommands.h"
13 #include "Res.h"
14 #include "version.h"
15 //=============================================================================
16 namespace bpo = boost::program_options;
17 //=============================================================================
18 namespace dds
19 {
20  namespace test_cmd
21  {
23  typedef struct SOptions
24  {
26  : m_transportTest(false)
27  , m_verbose(false)
28  , m_sid(boost::uuids::nil_uuid())
29  {
30  }
31 
33  bool m_verbose;
34  boost::uuids::uuid m_sid;
35  } SOptions_t;
36  //=============================================================================
37  inline void PrintVersion()
38  {
39  LOG(MiscCommon::log_stdout) << " v" << PROJECT_VERSION_STRING << "\n"
40  << "DDS configuration"
41  << " v" << USER_DEFAULTS_CFG_VERSION << "\n"
43  }
44  //=============================================================================
45  // Command line parser
46  inline bool ParseCmdLine(int _argc, char* _argv[], SOptions* _options)
47  {
48  if (nullptr == _options)
49  throw std::runtime_error("Internal error: options' container is empty.");
50 
51  // Generic options
52  bpo::options_description options("dds-getlog options");
53  options.add_options()("help,h", "Produce help message");
54  options.add_options()("version,v", "Version information");
55  options.add_options()("session,s", bpo::value<std::string>(), "DDS Session ID");
56  options.add_options()("transport,t", "Start transport test");
57  options.add_options()("verbose", "Verbose output");
58 
59  // Parsing command-line
60  bpo::variables_map vm;
61  bpo::store(bpo::command_line_parser(_argc, _argv).options(options).run(), vm);
62  bpo::notify(vm);
63 
64  if (vm.count("help") || vm.empty())
65  {
66  LOG(MiscCommon::log_stdout) << options;
67  return false;
68  }
69  if (vm.count("version"))
70  {
71  PrintVersion();
72  return false;
73  }
74  if (vm.count("transport"))
75  {
76  _options->m_transportTest = true;
77  }
78  if (vm.count("verbose"))
79  {
80  _options->m_verbose = true;
81  }
82  if (vm.count("session"))
83  {
84  _options->m_sid = boost::uuids::string_generator()(vm["session"].as<std::string>());
85  }
86 
87  return true;
88  }
89  } // namespace test_cmd
90 } // namespace dds
91 #endif
Definition: def.h:154
boost::uuids::uuid m_sid
Definition: dds-test/src/Options.h:34
struct dds::test_cmd::SOptions SOptions_t
dds-getlog's container of options
void PrintVersion()
Definition: dds-test/src/Options.h:37
bool m_transportTest
Definition: dds-test/src/Options.h:32
dds-getlog's container of options
Definition: dds-test/src/Options.h:23
#define LOG(severity)
Definition: Logger.h:56
const LPCSTR g_cszReportBugsAddr("Report bugs/comments to fairroot@gsi.de")
Definition: AgentConnectionManager.h:13
bool ParseCmdLine(int _argc, char *_argv[], SOptions *_options)
Definition: dds-test/src/Options.h:46
bool m_verbose
Definition: dds-test/src/Options.h:33
SOptions()
Definition: dds-test/src/Options.h:25