DDS  ver. 1.6
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 "SMUIChannel.h"
13 // BOOST
14 #include <boost/asio.hpp>
15 
16 namespace dds
17 {
18  namespace agent_cmd
19  {
20  class CAgentConnectionManager : public std::enable_shared_from_this<CAgentConnectionManager>
21  {
22  typedef std::vector<pid_t> childrenPidContainer_t;
23  typedef std::vector<protocol_api::SCommandAttachmentImpl<protocol_api::cmdUPDATE_KEY>::ptr_t>
24  updateKeyAttachmentQueue_t;
25 
26  public:
27  CAgentConnectionManager(const SOptions_t& _options, boost::asio::io_service& _io_service);
28  virtual ~CAgentConnectionManager();
29 
30  public:
31  void start();
32  void stop();
33 
34  private:
35  void doAwaitStop();
36  void onNewUserTask(pid_t _pid);
37  void terminateChildrenProcesses();
42  bool on_cmdUPDATE_KEY_ERROR(
49  bool on_cmdSTOP_USER_TASK(
54 
55  // Messages from shared memory
56  bool on_cmdUPDATE_KEY_SM(
58  bool on_cmdCUSTOM_CMD_SM(
60 
61  void taskExited(int _pid, int _exitCode);
62 
63  private:
64  boost::asio::io_service& m_service;
65  boost::asio::signal_set m_signals;
66  SOptions_t m_options;
69  childrenPidContainer_t m_children;
70  std::mutex m_childrenContainerMutex;
71  bool m_bStarted;
72  boost::thread_group m_workerThreads;
73  };
74  }
75 }
76 
77 #endif /* defined(__DDS__AGENT__AgentConnectionManager__) */
void start()
Definition: dds-agent/src/AgentConnectionManager.cpp:66
std::shared_ptr< CCommanderChannel > connectionPtr_t
Definition: BaseChannelImpl.h:192
virtual ~CAgentConnectionManager()
Definition: dds-agent/src/AgentConnectionManager.cpp:53
Definition: dds-agent/src/AgentConnectionManager.h:20
std::shared_ptr< SEmptyCmd > ptr_t
Definition: CommandAttachmentImpl.h:65
void stop()
Definition: dds-agent/src/AgentConnectionManager.cpp:222
std::weak_ptr< CCommanderChannel > weakConnectionPtr_t
Definition: BaseChannelImpl.h:193
std::shared_ptr< CSMUIChannel > connectionPtr_t
Definition: BaseSMChannelImpl.h:91
Definition: dds-agent/src/AgentConnectionManager.h:16
dds-commander&#39;s container of options
Definition: dds-agent/src/Options.h:27
CAgentConnectionManager(const SOptions_t &_options, boost::asio::io_service &_io_service)
Definition: dds-agent/src/AgentConnectionManager.cpp:35