FairMQ  1.2.0
C++ Message Passing Framework
FairMQSuboptParser.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2017 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public License (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 
13 
14 #ifndef FAIRMQPARSER_SUBOPT_H
15 #define FAIRMQPARSER_SUBOPT_H
16 
17 #include "FairMQParser.h" // for FairMQMap
18 #include <boost/program_options.hpp>
19 #include <cstring>
20 #include <vector>
21 #include <string>
22 
23 namespace po = boost::program_options;
24 
25 namespace fair
26 {
27 namespace mq
28 {
29 namespace parser
30 {
31 
48 struct SUBOPT
49 {
50  enum channelOptionKeyIds
51  {
52  NAME = 0, // name of the channel
53  TYPE, // push, pull, publish, subscribe, etc
54  METHOD, // bind or connect
55  ADDRESS, // host, protocol and port address
56  TRANSPORT, //
57  SNDBUFSIZE, // size of the send queue
58  RCVBUFSIZE, // size of the receive queue
59  SNDKERNELSIZE,
60  RCVKERNELSIZE,
61  RATELOGGING, // logging rate
62  NUMSOCKETS,
63  lastsocketkey
64  };
65 
66  constexpr static const char *channelOptionKeys[] = {
67  /*[NAME] = */ "name",
68  /*[TYPE] = */ "type",
69  /*[METHOD] = */ "method",
70  /*[ADDRESS] = */ "address",
71  /*[TRANSPORT] = */ "transport",
72  /*[SNDBUFSIZE] = */ "sndBufSize",
73  /*[RCVBUFSIZE] = */ "rcvBufSize",
74  /*[SNDKERNELSIZE] = */ "sndKernelSize",
75  /*[RCVKERNELSIZE] = */ "rcvKernelSize",
76  /*[RATELOGGING] = */ "rateLogging",
77  /*[NUMSOCKETS] = */ "numSockets",
78  nullptr
79  };
80 
81  FairMQMap UserParser(const std::vector<std::string>& channelConfig, const std::string& deviceId, const std::string& rootNode = "fairMQOptions");
82 };
83 
84 }
85 }
86 }
87 
88 #endif /* FAIRMQPARSER_SUBOPT_H */
Definition: FairMQSuboptParser.h:48
Definition: DeviceRunner.h:23