DDS  ver. 2.0
dds-intercom-lib/src/AgentConnectionManager.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 #ifndef __DDS__API__AgentConnectionManager__
6 #define __DDS__API__AgentConnectionManager__
7 // DDS
8 #include "AgentChannel.h"
9 // BOOST
10 #include <boost/asio.hpp>
11 #include <boost/thread/thread.hpp>
12 #include <condition_variable>
13 
14 namespace dds
15 {
16  namespace internal_api
17  {
18  // struct SSyncHelper;
19 
20  class CAgentConnectionManager : public std::enable_shared_from_this<CAgentConnectionManager>
21  {
22  public:
23  typedef std::shared_ptr<CAgentConnectionManager> ptr_t;
24 
25  CAgentConnectionManager(boost::asio::io_service& _service);
26  virtual ~CAgentConnectionManager();
27 
28  public:
29  void start();
30  void stop();
31  // bool stopped()
32  // {
33  // return m_service.stopped();
34  // }
35  void sendCustomCmd(const protocol_api::SCustomCmdCmd& _command, uint64_t _protocolHeaderID);
36  bool started() const
37  {
38  return m_bStarted;
39  }
40 
41  public:
42  void waitCondition();
43  void stopCondition();
44 
45  private:
48  const protocol_api::SSenderInfo& _sender);
49  CAgentChannel::weakConnectionPtr_t getAgentChannel()
50  {
51  return m_channel;
52  }
53 
54  private:
55  boost::asio::io_service& m_io_service;
56 
57  // Don't use m_channel directly, only via getAgentChannel
58  // In case if channel is destoryed, there still could be user calling update key
59  // TODO: need to find a way to hide m_channel from direct access
61  bool m_bStarted;
62 
68  std::mutex m_waitMutex;
69  std::condition_variable m_waitCondition;
70  };
71  }
72 }
73 
74 #endif /* defined(__DDS__API__AgentConnectionManager__) */
bool started() const
Definition: dds-intercom-lib/src/AgentConnectionManager.h:36
std::shared_ptr< CAgentChannel > connectionPtr_t
Definition: BaseChannelImpl.h:216
void waitCondition()
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:162
Definition: BaseEventHandlersImpl.h:48
virtual ~CAgentConnectionManager()
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:41
std::shared_ptr< SEmptyCmd > ptr_t
Definition: CommandAttachmentImpl.h:66
void stopCondition()
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:168
std::weak_ptr< CAgentChannel > weakConnectionPtr_t
Definition: BaseChannelImpl.h:217
void sendCustomCmd(const protocol_api::SCustomCmdCmd &_command, uint64_t _protocolHeaderID)
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:143
void stop()
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:112
Definition: dds-intercom-lib/src/AgentConnectionManager.h:20
Definition: dds-agent/src/AgentConnectionManager.h:18
Definition: CustomCmdCmd.h:14
CAgentConnectionManager(boost::asio::io_service &_service)
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:35
std::shared_ptr< CAgentConnectionManager > ptr_t
Definition: dds-intercom-lib/src/AgentConnectionManager.h:23
void start()
Definition: dds-intercom-lib/src/AgentConnectionManager.cpp:46