DDS  ver. 2.0
dds-agent/src/AgentConnectionManager.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 
6 #ifndef __DDS__AGENT__AgentConnectionManager__
7 #define __DDS__AGENT__AgentConnectionManager__
8 
9 // DDS
10 #include "CommanderChannel.h"
11 #include "Options.h"
12 #include "SMCommanderChannel.h"
13 #include "SMLeaderChannel.h"
14 #include "SMUIChannel.h"
15 // BOOST
16 #include <boost/asio.hpp>
17 
18 namespace dds
19 {
20  namespace agent_cmd
21  {
22  class CAgentConnectionManager : public std::enable_shared_from_this<CAgentConnectionManager>
23  {
24  typedef std::vector<pid_t> childrenPidContainer_t;
25  typedef std::vector<protocol_api::SCommandAttachmentImpl<protocol_api::cmdUPDATE_KEY>::ptr_t>
26  updateKeyAttachmentQueue_t;
27 
28  public:
29  CAgentConnectionManager(const SOptions_t& _options);
30  virtual ~CAgentConnectionManager();
31 
32  public:
33  void start();
34  void stop();
35 
36  private:
37  void startService();
38  void createNetworkAgentChannel(uint64_t _protocolHeaderID);
39  void createSMIntercomChannel(uint64_t _protocolHeaderID);
40  void createSMLeaderChannel(uint64_t _protocolHeaderID);
41  void createSMAgentChannel(uint64_t _protocolHeaderID);
42  void doAwaitStop();
43  void onNewUserTask(pid_t _pid);
44  void terminateChildrenProcesses();
45  void on_cmdSHUTDOWN(const protocol_api::SSenderInfo& _sender,
48  void on_cmdREPLY_LOBBY_MEMBER_HANDSHAKE_ERR(
49  const protocol_api::SSenderInfo& _sender,
51  _attachment,
53  void on_cmdSIMPLE_MSG(const protocol_api::SSenderInfo& _sender,
56  void on_cmdSTOP_USER_TASK(
57  const protocol_api::SSenderInfo& _sender,
60  void on_cmdCUSTOM_CMD(const protocol_api::SSenderInfo& _sender,
63 
64  void taskExited(int _pid, int _exitCode);
65 
66  private:
67  boost::asio::io_service m_io_service;
68  boost::thread_group m_workerThreads;
69 
71  CSMUIChannel::connectionPtr_t m_SMIntercomChannel;
74 
75  boost::asio::signal_set m_signals;
76  SOptions_t m_options;
77  childrenPidContainer_t m_children;
78  std::mutex m_childrenContainerMutex;
79  bool m_bStarted;
80  };
81  }
82 }
83 
84 #endif /* defined(__DDS__AGENT__AgentConnectionManager__) */
void start()
Definition: dds-agent/src/AgentConnectionManager.cpp:60
std::shared_ptr< CCommanderChannel > connectionPtr_t
Definition: BaseChannelImpl.h:216
Definition: BaseEventHandlersImpl.h:48
std::weak_ptr< CSMCommanderChannel > weakConnectionPtr_t
Definition: BaseSMChannelImpl.h:163
virtual ~CAgentConnectionManager()
Definition: dds-agent/src/AgentConnectionManager.cpp:47
Definition: dds-agent/src/AgentConnectionManager.h:22
std::shared_ptr< SEmptyCmd > ptr_t
Definition: CommandAttachmentImpl.h:66
void stop()
Definition: dds-agent/src/AgentConnectionManager.cpp:162
std::shared_ptr< CSMUIChannel > connectionPtr_t
Definition: BaseSMChannelImpl.h:162
Definition: dds-agent/src/AgentConnectionManager.h:18
dds-commander&#39;s container of options
Definition: dds-agent/src/Options.h:27
CAgentConnectionManager(const SOptions_t &_options)
Definition: dds-agent/src/AgentConnectionManager.cpp:30