DDS  ver. 1.6
dds-commander/src/AgentChannel.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 #ifndef __DDS__CAgentChannel__
6 #define __DDS__CAgentChannel__
7 // DDS
8 #include "ServerChannelImpl.h"
9 // STD
10 #include <chrono>
11 
12 namespace dds
13 {
14  namespace commander_cmd
15  {
17  {
18  unknown = 0,
19  idle, // no tasks are assigned
20  executing // assigned task is executing
21  };
22  const std::array<std::string, 3> g_agentStates = { { "unknown", "idle", "executing" } };
23 
24  class CAgentChannel : public protocol_api::CServerChannelImpl<CAgentChannel>
25  {
26  CAgentChannel(boost::asio::io_service& _service);
27 
28  public:
30  MESSAGE_HANDLER(cmdREPLY_HOST_INFO, on_cmdREPLY_HOST_INFO)
31  //====> replay on the "submit" command request
32  MESSAGE_HANDLER(cmdSUBMIT, on_cmdSUBMIT)
33  MESSAGE_HANDLER(cmdUSER_TASK_DONE, on_cmdUSER_TASK_DONE)
34  //====> replay on the "info" command request
35  // - get pid of the commander server
36  MESSAGE_HANDLER(cmdGED_PID, on_cmdGED_PID)
37  // - get Agents Info command
38  MESSAGE_HANDLER(cmdGET_AGENTS_INFO, on_cmdGET_AGENTS_INFO)
39  MESSAGE_HANDLER(cmdREPLY_ID, on_cmdREPLY_ID)
40  MESSAGE_HANDLER(cmdBINARY_ATTACHMENT_RECEIVED, on_cmdBINARY_ATTACHMENT_RECEIVED)
41  MESSAGE_HANDLER(cmdTRANSPORT_TEST, on_cmdTRANSPORT_TEST)
42  MESSAGE_HANDLER(cmdSIMPLE_MSG, on_cmdSIMPLE_MSG)
43  // - Topology commands
44  MESSAGE_HANDLER(cmdUPDATE_TOPOLOGY, on_cmdUPDATE_TOPOLOGY)
45  // - Agents commands
46  MESSAGE_HANDLER(cmdGET_LOG, on_cmdGET_LOG)
47  MESSAGE_HANDLER(cmdUPDATE_KEY, on_cmdUPDATE_KEY)
48  // Watchdog
49  MESSAGE_HANDLER(cmdWATCHDOG_HEARTBEAT, on_cmdWATCHDOG_HEARTBEAT)
50  MESSAGE_HANDLER(cmdGET_PROP_LIST, on_cmdGET_PROP_LIST)
51  MESSAGE_HANDLER(cmdGET_PROP_VALUES, on_cmdGET_PROP_VALUES)
52  // Statistics commands
53  MESSAGE_HANDLER(cmdENABLE_STAT, on_cmdENABLE_STAT)
54  MESSAGE_HANDLER(cmdDISABLE_STAT, on_cmdDISABLE_STAT)
55  MESSAGE_HANDLER(cmdGET_STAT, on_cmdGET_STAT)
56  // custom command
57  MESSAGE_HANDLER(cmdCUSTOM_CMD, on_cmdCUSTOM_CMD)
58  END_MSG_MAP()
59 
60  public:
61  uint64_t getId() const;
62  void setId(uint64_t _id);
63 
65  // This function only used in tests
66  void setRemoteHostInfo(const protocol_api::SHostInfoCmd& _hostInfo);
67 
68  uint64_t getTaskID() const;
69  void setTaskID(uint64_t _taskID);
70 
71  std::chrono::milliseconds getStartupTime() const;
72 
73  EAgentState getState() const;
74  void setState(EAgentState _state);
75 
76  private:
77  // Message Handlers
79  bool on_cmdREPLY_HOST_INFO(
84  bool on_cmdBINARY_ATTACHMENT_RECEIVED(
86  bool on_cmdGET_AGENTS_INFO(
88  bool on_cmdTRANSPORT_TEST(
92  bool on_cmdUSER_TASK_DONE(
94  bool on_cmdWATCHDOG_HEARTBEAT(
96  bool on_cmdGET_PROP_LIST(
98  bool on_cmdGET_PROP_VALUES(
100  bool on_cmdUPDATE_TOPOLOGY(
102  bool on_cmdENABLE_STAT(
104  bool on_cmdDISABLE_STAT(
108 
109  std::string _remoteEndIDString();
110 
111  private:
112  // We use unique ID because we need to identify a new agent after shutdown of the system on the same host.
113  // We have to distinguish between new and old agent.
114  uint64_t m_id;
115  protocol_api::SHostInfoCmd m_remoteHostInfo;
116  std::string m_sCurrentTopoFile;
117  uint64_t m_taskID;
118  std::chrono::milliseconds m_startUpTime;
119  EAgentState m_state;
120  };
121  }
122 }
123 #endif /* defined(__DDS__CAgentChannel__) */
Definition: ProtocolCommands.h:52
Definition: dds-commander/src/AgentChannel.h:24
const protocol_api::SHostInfoCmd & getRemoteHostInfo() const
Definition: dds-commander/src/AgentChannel.cpp:80
Definition: ProtocolCommands.h:61
EAgentState
Definition: dds-commander/src/AgentChannel.h:16
void setTaskID(uint64_t _taskID)
Definition: dds-commander/src/AgentChannel.cpp:75
Definition: ProtocolCommands.h:46
Definition: ProtocolCommands.h:37
std::shared_ptr< SEmptyCmd > ptr_t
Definition: CommandAttachmentImpl.h:65
void setState(EAgentState _state)
Definition: dds-commander/src/AgentChannel.cpp:100
const std::array< std::string, 3 > g_agentStates
Definition: dds-commander/src/AgentChannel.h:22
on_cmdREPLY_HOST_INFO MESSAGE_HANDLER(cmdSUBMIT, on_cmdSUBMIT) MESSAGE_HANDLER(cmdUSER_TASK_DONE
Definition: ProtocolCommands.h:59
EAgentState getState() const
Definition: dds-commander/src/AgentChannel.cpp:95
Definition: ProtocolCommands.h:62
Definition: ProtocolCommands.h:32
on_cmdREPLY_HOST_INFO on_cmdUSER_TASK_DONE on_cmdGET_AGENTS_INFO on_cmdBINARY_ATTACHMENT_RECEIVED on_cmdSIMPLE_MSG on_cmdGET_LOG on_cmdWATCHDOG_HEARTBEAT on_cmdGET_PROP_VALUES on_cmdDISABLE_STAT on_cmdCUSTOM_CMD END_MSG_MAP() public void setId(uint64_t _id)
Definition: dds-commander/src/AgentChannel.cpp:65
#define END_MSG_MAP()
Definition: BaseChannelImpl.h:122
Definition: ProtocolCommands.h:31
Definition: dds-agent/src/AgentConnectionManager.h:16
Definition: ProtocolCommands.h:65
Definition: ProtocolCommands.h:53
Definition: dds-commander/src/AgentChannel.h:19
Definition: ProtocolCommands.h:56
BEGIN_MSG_MAP(CAgentChannel) MESSAGE_HANDLER(cmdREPLY_HOST_INFO
Definition: dds-commander/src/AgentChannel.h:20
Definition: HostInfoCmd.h:15
Definition: ProtocolCommands.h:63
Definition: ProtocolCommands.h:64
Definition: BaseChannelImpl.h:42
Definition: ProtocolCommands.h:43
Definition: ProtocolCommands.h:36
Definition: ProtocolCommands.h:45
Definition: ProtocolCommands.h:40
Definition: ProtocolCommands.h:51
Definition: dds-commander/src/AgentChannel.h:18
void setRemoteHostInfo(const protocol_api::SHostInfoCmd &_hostInfo)
Definition: dds-commander/src/AgentChannel.cpp:85
uint64_t getTaskID() const
Definition: dds-commander/src/AgentChannel.cpp:70
std::chrono::milliseconds getStartupTime() const
Definition: dds-commander/src/AgentChannel.cpp:90
Definition: ProtocolCommands.h:57