DDS  ver. 3.6
ToolsProtocol.h
Go to the documentation of this file.
1 // Copyright 2019 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 
6 #ifndef DDS_TOOLSPROTOCOL_H
7 #define DDS_TOOLSPROTOCOL_H
8 
9 // STD
10 #include <chrono>
11 #include <ostream>
12 #include <string>
14 #include <boost/property_tree/ptree.hpp>
15 // DDS
16 #include "Intercom.h"
17 #include "ToolsProtocolCore.h"
18 
19 namespace dds
20 {
21  namespace tools_api
22  {
24  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseResponseData, SDoneResponseData, "done")
25 
26 
27  struct SMessageResponseData : SBaseResponseData<SMessageResponseData>
28  {
29  SMessageResponseData();
30  SMessageResponseData(const boost::property_tree::ptree& _pt);
31 
32  std::string m_msg;
34 
35  private:
36  friend SBaseData<SMessageResponseData>;
37  friend SBaseResponseData<SMessageResponseData>;
38  void _fromPT(const boost::property_tree::ptree& _pt);
39  void _toPT(boost::property_tree::ptree& _pt) const;
40  static constexpr const char* _protocolTag = "message";
41 
42  public:
44  bool operator==(const SMessageResponseData& _val) const;
46  friend std::ostream& operator<<(std::ostream& _os, const SMessageResponseData& _data);
47  };
48 
50  struct SProgressResponseData : SBaseResponseData<SProgressResponseData>
51  {
53  SProgressResponseData(const boost::property_tree::ptree& _pt);
55  uint16_t _srcCmd, uint32_t _completed, uint32_t _total, uint32_t _errors, uint32_t _time = 0);
56 
57  uint32_t m_completed = 0;
58  uint32_t m_total = 0;
59  uint32_t m_errors = 0;
60  uint32_t m_time = 0;
61  uint16_t m_srcCommand = 0;
62 
63  private:
66  void _fromPT(const boost::property_tree::ptree& _pt);
67  void _toPT(boost::property_tree::ptree& _pt) const;
68  static constexpr const char* _protocolTag = "progress";
69 
70  public:
72  bool operator==(const SProgressResponseData& _val) const;
74  friend std::ostream& operator<<(std::ostream& _os, const SProgressResponseData& _data);
75  };
76 
78  struct SSubmitRequestData : SBaseRequestData<SSubmitRequestData>
79  {
81  SSubmitRequestData(const boost::property_tree::ptree& _pt);
82 
83  std::string m_rms;
84  uint32_t m_instances = 0;
85  uint32_t m_slots = 0;
86  std::string m_config;
87  std::string m_pluginPath;
88 
89  private:
91  void _fromPT(const boost::property_tree::ptree& _pt);
92  void _toPT(boost::property_tree::ptree& _pt) const;
93  static constexpr const char* _protocolTag = "submit";
94 
95  public:
97  bool operator==(const SSubmitRequestData& _val) const;
99  friend std::ostream& operator<<(std::ostream& _os, const SSubmitRequestData& _data);
100  };
101 
104 
106  struct STopologyRequestData : SBaseRequestData<STopologyRequestData>
107  {
109  STopologyRequestData(const boost::property_tree::ptree& _pt);
110 
111  enum class EUpdateType : uint8_t
112  {
113  UPDATE = 0,
114  ACTIVATE,
115  STOP
116  };
118  std::string m_topologyFile;
119  bool m_disableValidation = false;
120 
121  private:
123  void _fromPT(const boost::property_tree::ptree& _pt);
124  void _toPT(boost::property_tree::ptree& _pt) const;
125  static constexpr const char* _protocolTag = "topology";
126 
127  public:
129  bool operator==(const STopologyRequestData& _val) const;
131  friend std::ostream& operator<<(std::ostream& _os, const STopologyRequestData& _data);
132  };
133 
135  struct STopologyResponseData : SBaseResponseData<STopologyResponseData>
136  {
138  STopologyResponseData(const boost::property_tree::ptree& _pt);
139 
140  bool m_activated{ true };
141  uint64_t m_agentID{ 0 };
142  uint64_t m_slotID{ 0 };
143  uint64_t m_taskID{ 0 };
144  uint64_t m_collectionID{ 0 };
145  std::string m_path;
146  std::string m_host;
147  std::string m_wrkDir;
148 
149  private:
152  void _fromPT(const boost::property_tree::ptree& _pt);
153  void _toPT(boost::property_tree::ptree& _pt) const;
154  static constexpr const char* _protocolTag = "topology";
155 
156  public:
158  bool operator==(const STopologyResponseData& _val) const;
160  friend std::ostream& operator<<(std::ostream& _os, const STopologyResponseData& _data);
161  };
162 
165 
167  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SGetLogRequestData, "getlog")
168 
169 
170  using SGetLogRequest = SBaseRequestImpl<SGetLogRequestData, SEmptyResponseData>;
171 
174  {
176  SCommanderInfoResponseData(const boost::property_tree::ptree& _pt);
177 
178  pid_t m_pid = 0;
179  std::string m_activeTopologyName;
180  std::string m_activeTopologyPath;
181 
182  private:
185  void _fromPT(const boost::property_tree::ptree& _pt);
186  void _toPT(boost::property_tree::ptree& _pt) const;
187  static constexpr const char* _protocolTag = "commanderInfo";
188 
189  public:
191  bool operator==(const SCommanderInfoResponseData& _val) const;
193  friend std::ostream& operator<<(std::ostream& _os, const SCommanderInfoResponseData& _data);
194  };
195 
197  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SCommanderInfoRequestData, "commanderInfo")
198 
199 
200  using SCommanderInfoRequest = SBaseRequestImpl<SCommanderInfoRequestData, SCommanderInfoResponseData>;
201 
204  {
206  SAgentInfoResponseData(const boost::property_tree::ptree& _pt);
207 
208  uint32_t m_index{ 0 };
209  uint64_t m_agentID{ 0 };
210  std::chrono::milliseconds m_startUpTime{ std::chrono::milliseconds(0) };
211  std::string m_username;
212  std::string m_host;
213  std::string m_DDSPath;
214  uint32_t m_agentPid{ 0 };
215  uint32_t m_nSlots{ 0 };
216  uint32_t m_nIdleSlots{ 0 };
217  uint32_t m_nExecutingSlots{ 0 };
218 
219  private:
222  void _fromPT(const boost::property_tree::ptree& _pt);
223  void _toPT(boost::property_tree::ptree& _pt) const;
224  static constexpr const char* _protocolTag = "agentInfo";
225 
226  public:
228  bool operator==(const SAgentInfoResponseData& _val) const;
230  friend std::ostream& operator<<(std::ostream& _os, const SAgentInfoResponseData& _data);
231  };
232 
234  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SAgentInfoRequestData, "agentInfo")
235 
236 
237  using SAgentInfoRequest = SBaseRequestImpl<SAgentInfoRequestData, SAgentInfoResponseData>;
238 
241  {
243  SSlotInfoResponseData(const boost::property_tree::ptree& _pt);
244 
245  uint32_t m_index{ 0 };
246  uint64_t m_agentID{ 0 };
247  uint64_t m_slotID{ 0 };
248  uint64_t m_taskID{ 0 };
249  uint32_t m_state{ 0 };
250  std::string m_host;
251  std::string m_wrkDir;
252 
253  private:
256  void _fromPT(const boost::property_tree::ptree& _pt);
257  void _toPT(boost::property_tree::ptree& _pt) const;
258  static constexpr const char* _protocolTag = "slotInfo";
259 
260  public:
262  bool operator==(const SSlotInfoResponseData& _val) const;
264  friend std::ostream& operator<<(std::ostream& _os, const SSlotInfoResponseData& _data);
265  };
266 
268  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SSlotInfoRequestData, "slotInfo")
269 
270 
271  using SSlotInfoRequest = SBaseRequestImpl<SSlotInfoRequestData, SSlotInfoResponseData>;
272 
275  {
277  SAgentCountResponseData(const boost::property_tree::ptree& _pt);
278 
279  uint32_t m_activeSlotsCount = 0;
280  uint32_t m_idleSlotsCount = 0;
281  uint32_t m_executingSlotsCount = 0;
282 
283  private:
286  void _fromPT(const boost::property_tree::ptree& _pt);
287  void _toPT(boost::property_tree::ptree& _pt) const;
288  static constexpr const char* _protocolTag = "agentCount";
289 
290  public:
292  bool operator==(const SAgentCountResponseData& _val) const;
294  friend std::ostream& operator<<(std::ostream& _os, const SAgentCountResponseData& _data);
295  };
296 
298  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SAgentCountRequestData, "agentCount")
299 
300 
301  using SAgentCountRequest = SBaseRequestImpl<SAgentCountRequestData, SAgentCountResponseData>;
302 
305  {
307  SOnTaskDoneResponseData(const boost::property_tree::ptree& _pt);
308 
309  uint64_t m_taskID{ 0 };
310  uint32_t m_exitCode{ 0 };
311  uint32_t m_signal{ 0 };
312  std::string m_host;
313  std::string m_wrkDir;
314  std::string m_taskPath;
315 
316  private:
319  void _fromPT(const boost::property_tree::ptree& _pt);
320  void _toPT(boost::property_tree::ptree& _pt) const;
321  static constexpr const char* _protocolTag = "onTaskDone";
322 
323  public:
325  bool operator==(const SOnTaskDoneResponseData& _val) const;
327  friend std::ostream& operator<<(std::ostream& _os, const SOnTaskDoneResponseData& _data);
328  };
329 
331  DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SOnTaskDoneRequestData, "onTaskDone")
332 
333 
334  using SOnTaskDoneRequest = SBaseRequestImpl<SOnTaskDoneRequestData, SOnTaskDoneResponseData>;
335 
338  {
339 
341  SAgentCommandRequestData(const boost::property_tree::ptree& _pt);
342 
343  enum class EAgentCommandType : uint8_t
344  {
345  shutDownByID = 0,
346  shutDownBySlotID,
347  // stopTaskByTaskID,
349  // stopTaskByAgentID,
350  // restartTaskByTaskID,
351  // restartTaskByAgentID
352  };
353 
354  EAgentCommandType m_commandType = EAgentCommandType::shutDownByID;
355  uint64_t m_arg1{ 0 };
356  std::string m_arg2;
357 
358  private:
360  void _fromPT(const boost::property_tree::ptree& _pt);
361  void _toPT(boost::property_tree::ptree& _pt) const;
362  static constexpr const char* _protocolTag = "agentCommand";
363 
364  public:
366  bool operator==(const SAgentCommandRequestData& _val) const;
368  friend std::ostream& operator<<(std::ostream& _os, const SAgentCommandRequestData& _data);
369  };
370 
373  } // namespace tools_api
374 } // namespace dds
375 
376 #endif /* DDS_TOOLSPROTOCOL_H */
std::string m_rms
RMS.
Definition: ToolsProtocol.h:83
std::string m_host
Hostname.
Definition: ToolsProtocol.h:250
EUpdateType m_updateType
Topology update type: Update, Activate, Stop.
Definition: ToolsProtocol.h:117
uint16_t m_srcCommand
Reserved for internal use.
Definition: ToolsProtocol.h:61
bool operator==(const STopologyResponseData &_val) const
Equality operator.
Definition: ToolsProtocol.cpp:306
Structure holds information of onTaskDone response.
Definition: ToolsProtocol.h:304
bool operator==(const STopologyRequestData &_val) const
Equality operator.
Definition: ToolsProtocol.cpp:244
uint32_t m_slots
Definition: ToolsProtocol.h:85
std::string m_wrkDir
Working directory.
Definition: ToolsProtocol.h:313
uint64_t m_collectionID
Collection ID, 0 if not in a collection.
Definition: ToolsProtocol.h:144
std::string m_DDSPath
DDS path.
Definition: ToolsProtocol.h:213
std::string m_arg2
argument #1 - string. The usage depends on the command.
Definition: ToolsProtocol.h:356
STopologyResponseData()
Definition: ToolsProtocol.cpp:273
friend std::ostream & operator<<(std::ostream &_os, const STopologyRequestData &_data)
Ostream operator.
Definition: ToolsProtocol.cpp:257
SProgressResponseData()
Definition: ToolsProtocol.cpp:29
friend std::ostream & operator<<(std::ostream &_os, const SProgressResponseData &_data)
Ostream operator.
Definition: ToolsProtocol.cpp:79
std::string m_taskPath
Task path in the topology.
Definition: ToolsProtocol.h:314
Structure holds information of agentCommand request.
Definition: ToolsProtocol.h:337
std::string m_path
Path in the topology.
Definition: ToolsProtocol.h:145
Definition: ToolsProtocolCore.h:213
SSubmitRequestData()
Definition: ToolsProtocol.cpp:165
EUpdateType
Definition: ToolsProtocol.h:111
std::string m_activeTopologyPath
Filepath of active topology, empty if none is active.
Definition: ToolsProtocol.h:180
Structure holds information of topology response - activated and stopped tasks.
Definition: ToolsProtocol.h:135
uint64_t m_taskID
Task ID, 0 if not assigned.
Definition: ToolsProtocol.h:143
STopologyRequestData()
Definition: ToolsProtocol.cpp:221
bool m_activated
True if task was activated, otherwise it's stopped.
Definition: ToolsProtocol.h:140
uint64_t m_slotID
Slot ID.
Definition: ToolsProtocol.h:142
Definition: ToolsProtocolCore.h:209
friend std::ostream & operator<<(std::ostream &_os, const STopologyResponseData &_data)
Ostream operator.
Definition: ToolsProtocol.cpp:320
std::string m_host
Hostname.
Definition: ToolsProtocol.h:312
std::string m_host
Hostname.
Definition: ToolsProtocol.h:212
std::string m_wrkDir
Wrk directory.
Definition: ToolsProtocol.h:147
Structure holds information of agentCount response.
Definition: ToolsProtocol.h:274
Structure holds information of commanderInfo response.
Definition: ToolsProtocol.h:173
uint32_t m_time
Definition: ToolsProtocol.h:60
Structure holds information of a submit request.
Definition: ToolsProtocol.h:78
Miscellaneous functions and helpers are located here.
Definition: AgentConnectionManager.h:13
std::string m_activeTopologyName
Name of active topology, empty if none is active.
Definition: ToolsProtocol.h:179
Definition: ToolsProtocolCore.h:245
bool operator==(const SProgressResponseData &_val) const
Equality operator.
Definition: ToolsProtocol.cpp:66
Structure holds information of a done response.
Definition: ToolsProtocol.h:50
EAgentCommandType
Definition: ToolsProtocol.h:343
std::string m_config
< Number of task slots.
Definition: ToolsProtocol.h:86
uint32_t m_errors
Definition: ToolsProtocol.h:59
bool operator==(const custom_istream_iterator< T, Ch, Tr, Dist > &lhs, const custom_istream_iterator< T, Ch, Tr, Dist > &rhs)
Definition: CustomIterator.h:101
friend std::ostream & operator<<(std::ostream &_os, const SSubmitRequestData &_data)
Ostream operator.
Definition: ToolsProtocol.cpp:205
std::string m_pluginPath
Optional. A plug-in's directory search path.
Definition: ToolsProtocol.h:87
Structure holds information of agentInfo response.
Definition: ToolsProtocol.h:203
uint32_t m_instances
Number of instances.
Definition: ToolsProtocol.h:84
EMsgSeverity
Enumeration with message severity.
Definition: Intercom.h:126
Structure holds information of topology request.
Definition: ToolsProtocol.h:106
Definition: ToolsProtocolCore.h:204
std::string m_host
Hostname.
Definition: ToolsProtocol.h:146
std::string m_wrkDir
Wrk directory.
Definition: ToolsProtocol.h:251
bool operator==(const SSubmitRequestData &_val) const
Equality operator.
Definition: ToolsProtocol.cpp:192
uint32_t m_total
Definition: ToolsProtocol.h:58
uint32_t m_completed
Definition: ToolsProtocol.h:57
Structure holds information of slot info response.
Definition: ToolsProtocol.h:240
std::string m_username
Username.
Definition: ToolsProtocol.h:211
bool m_disableValidation
A flag to disiable topology validation before processing it.
Definition: ToolsProtocol.h:119
std::string m_topologyFile
A topology file to process.
Definition: ToolsProtocol.h:118
uint64_t m_agentID
Agent ID.
Definition: ToolsProtocol.h:141
std::ostream & operator<<(std::ostream &_os, const SProgressResponseData &_data)
Definition: ToolsProtocol.cpp:79
DDS_TOOLS_DECLARE_DATA_CLASS(SBaseRequestData, SGetLogRequestData, "getlog") using SGetLogRequest
Structure holds information of a getlog request.