DDS  ver. 2.0
dds_intercom.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 #ifndef DDS_INTERCOM_H_
6 #define DDS_INTERCOM_H_
7 // STD
8 #include <string>
9 // BOOST
11 #include <boost/property_tree/json_parser.hpp>
12 #include <boost/signals2/signal.hpp>
13 
14 namespace dds
15 {
27  namespace intercom_api
28  {
30  // DDS intercom service
33  {
34  public:
36 
38  void subscribeOnError(errorSignal_t::slot_function_type _subscriber);
40  void start(const std::string& _sessionID = "");
41  };
42 
44  // DDS key-value
46  class CKeyValue
47  {
48  public:
50  typedef boost::signals2::signal<void(
51  const std::string& /*_propertyID*/, const std::string& /*_key*/, const std::string& /*_value*/)>
53 
55  typedef boost::signals2::signal<void(const std::string& /*_propertyID*/, const std::string& /*_key*/)>
57 
58  public:
59  CKeyValue(CIntercomService& _service);
60  ~CKeyValue();
61 
62  public:
63  void putValue(const std::string& _key, const std::string& _value);
64  void subscribe(signal_t::slot_function_type _subscriber);
65  void subscribeOnDelete(deleteSignal_t::slot_function_type _subscriber);
66  void unsubscribe();
67 
68  public:
70  };
73 
75  // DDS custom commands
77  class CCustomCmd
78  {
79  public:
81  typedef boost::signals2::signal<void(
82  const std::string& /*_command*/, const std::string& /*_condition*/, uint64_t /*_senderID*/)>
84  typedef boost::signals2::signal<void(const std::string&)> replySignal_t;
85 
86  public:
87  CCustomCmd(CIntercomService& _service);
88  ~CCustomCmd();
89 
90  public:
91  void send(const std::string& _command, const std::string& _condition);
92  void subscribe(signal_t::slot_function_type _subscriber);
93  void subscribeOnReply(replySignal_t::slot_function_type _subscriber);
94  void unsubscribe();
95 
96  public:
98  };
101 
103  // DDS RMS plugins
105 
107  const std::string g_sRmsAgentSign = "rms_agent_sign";
108 
110  enum class EMsgSeverity
111  {
112  info,
113  error
114  };
115 
117  struct SSubmit
118  {
120  SSubmit();
121 
124  std::string toJSON();
125 
128  void fromJSON(const std::string& _json);
129 
132  void fromPT(const boost::property_tree::ptree& _pt);
133 
135  bool operator==(const SSubmit& _val) const;
136 
137  uint32_t m_nInstances;
138  std::string m_cfgFilePath;
139  std::string m_id;
140  std::string m_wrkPackagePath;
141  };
142 
144  struct SMessage
145  {
147  SMessage();
148 
151  std::string toJSON();
152 
155  void fromJSON(const std::string& _json);
156 
159  void fromPT(const boost::property_tree::ptree& _pt);
160 
162  bool operator==(const SMessage& _val) const;
163 
165  std::string m_msg;
166  std::string m_id;
167  };
168 
170  struct SInit
171  {
173  SInit();
174 
177  std::string toJSON();
178 
181  void fromJSON(const std::string& _json);
182 
185  void fromPT(const boost::property_tree::ptree& _pt);
186 
188  bool operator==(const SInit& _val) const;
189 
190  std::string m_id;
191  };
192 
222  {
223  public:
225  typedef boost::signals2::signal<void(const SSubmit&)> signalSubmit_t;
226 
228  typedef boost::signals2::signal<void(const SMessage&)> signalMessage_t;
229 
230  public:
233  CRMSPluginProtocol(const std::string& _id);
234 
237 
238  public:
241  void onSubmit(signalSubmit_t::slot_function_type _subscriber);
242 
245  void onMessage(signalMessage_t::slot_function_type _subscriber);
246 
250  void sendMessage(EMsgSeverity _severity, const std::string& _msg);
251 
261  void start(bool _block = true);
262 
264  void stop();
265 
266  protected:
269  void notify(std::istream& _stream);
270 
271  private:
273  void unsubscribe();
274 
275  signalSubmit_t m_signalSubmit;
276  signalMessage_t m_signalMessage;
277 
278  std::string m_id;
279 
280  CIntercomService m_service;
281  CCustomCmd m_customCmd;
282  };
283  }
284 }
285 
286 #endif /* DDS_INTERCOM_H_ */
std::string m_cfgFilePath
Path to the configuration file.
Definition: dds_intercom.h:138
Structure holds information of submit notification.
Definition: dds_intercom.h:117
std::string m_id
ID for communication with DDS commander.
Definition: dds_intercom.h:190
Structure holds information of message notification.
Definition: dds_intercom.h:144
Definition: dds_intercom.h:77
uint32_t m_nInstances
Number of instances.
Definition: dds_intercom.h:137
boost::signals2::signal< void(const std::string &, const std::string &)> deleteSignal_t
Definition: dds_intercom.h:56
boost::signals2::signal< void(const std::string &, const std::string &, uint64_t)> signal_t
Definition: dds_intercom.h:83
EMsgSeverity m_msgSeverity
Message severity.
Definition: dds_intercom.h:164
std::string m_id
ID for communication with DDS commander.
Definition: dds_intercom.h:166
void start(const std::string &_sessionID="")
Start DDS service, i.e. receiving and sending messages.
Definition: dds_intercom.cpp:25
boost::signals2::signal< void(const SMessage &)> signalMessage_t
Callback function for message notifications.
Definition: dds_intercom.h:228
const std::string g_sRmsAgentSign
Sign that is send to commander if RMS plug-in is connecting to it.
Definition: dds_intercom.h:107
boost::signals2::signal< void(const SSubmit &)> signalSubmit_t
Callback function for submit notifications.
Definition: dds_intercom.h:225
Definition: dds-agent/src/AgentConnectionManager.h:18
Definition: dds_intercom.h:32
CIntercomService & m_service
Reference to intercom service. Internally we don&#39;t use this object. We store the reference in order t...
Definition: dds_intercom.h:69
boost::signals2::signal< void(const std::string &)> replySignal_t
Definition: dds_intercom.h:84
void subscribeOnError(errorSignal_t::slot_function_type _subscriber)
Subscribe on error messages from DDS intercom service.
Definition: dds_intercom.cpp:20
CIntercomService & m_service
Reference to intercom service. Internally we don&#39;t use this object. We store the reference in order t...
Definition: dds_intercom.h:97
std::string m_id
ID for communication with DDS commander.
Definition: dds_intercom.h:139
Definition: dds_intercom.h:46
std::string m_wrkPackagePath
A full path of the agent worker package, which needs to be deployed.
Definition: dds_intercom.h:140
EMsgSeverity
Enumeration with message severity.
Definition: dds_intercom.h:110
boost::signals2::signal< void(const std::string &, const std::string &, const std::string &)> signal_t
Definition: dds_intercom.h:52
bool operator==(const SChannelInfo< T > &lhs, const SChannelInfo< T > &rhs)
Definition: ChannelInfo.h:33
Class implements basic API for DDS RMS plug-ins.
Definition: dds_intercom.h:221
Structure holds information of init notification.
Definition: dds_intercom.h:170
std::string m_msg
Message text.
Definition: dds_intercom.h:165
~CIntercomService()
Definition: dds_intercom.cpp:15