ddt  1.0.0
ddtClient.hpp
Go to the documentation of this file.
1 
22 #ifndef DDTCLIENT_HPP_
23 #define DDTCLIENT_HPP_
24 
25 #include <Ddtdatatransfericd.hpp>
26 #include <future>
27 #include <mal/Cii.hpp>
28 #include <mal/rr/qos/ReplyTime.hpp>
29 #include <mal/utility/LoadMal.hpp>
30 #include <map>
31 #include <thread>
32 
33 #include "ddt/ddtConstants.hpp"
34 #include "ddt/ddtLogger.hpp"
35 
36 namespace mal = ::elt::mal;
37 namespace datatransfer = ::elt::ddt::datatransfer;
38 
39 namespace ddt {
40 
47 class DdtClient {
48  public:
52  explicit DdtClient();
53 
64  DdtClient(const std::string remote_broker, const int32_t repl_time,
65  const int32_t hb_interval, const int32_t hb_timeout,
66  const std::string broker, DdtLogger* ddt_logger);
67 
71  virtual ~DdtClient();
72 
78  void AddUuid(std::string uuid, std::string dsi);
79 
85  void UnregisterSubscriber(const std::string uuid);
86 
91  bool CheckIfEmpty();
92 
99  bool CheckPublisherExists(const std::string& data_stream_identifier) const;
100 
112  int32_t RegisterRemoteSubscriber(const std::string& subscriber_uuid,
113  const std::string& data_stream_identifier,
114  const int32_t latency,
115  const int32_t deadline) const;
116 
123  std::string GetPublishingUri(const std::string& data_stream_identifier) const;
124 
131  int32_t get_max_data_sample_size(
132  const std::string& data_stream_identifier) const;
133 
140  int32_t get_number_of_samples(
141  const std::string& data_stream_identifier) const;
142 
148  bool get_compute_checksum(const std::string& data_stream_identifier) const;
149 
154  std::string get_broker_uri() const;
155 
156  protected:
167  void Init(const std::string remote_broker, const int32_t repl_time,
168  const int32_t hb_interval, const int32_t hb_timeout,
169  const std::string broker, DdtLogger* ddt_logger);
170 
177  std::map<std::string, std::string> subscriber_map;
178 
182  std::atomic<bool> connected_to_broker;
183 
187  std::atomic<bool> heartbeat_active;
188 
192  std::string remote_broker_uri;
193 
197  std::string broker_uri;
198 
202  int32_t reply_time;
203 
208 
213 
218 
219  private:
224  int32_t InitMalClient();
225 
229  void StartHeartbeat();
230 
234  void StopHeartbeat();
235 
239  void HeartbeatThread();
240 
245  void Reregister();
246 
250  std::unique_ptr<
251  datatransfer::DataBrokerRegistrationSync,
252  std::default_delete<datatransfer::DataBrokerRegistrationSync> >
253  client;
254 
258  elt::mal::rr::ListenerRegistration connection_listener;
259 
263  std::promise<void> exit_signal;
264 
268  std::future<void> future_object;
269 
273  std::mutex subscriber_mutex;
274 
279  const int32_t NUM_RETRIES = 10;
280 
285  const int32_t LATENCY = 10000;
286 
290  const int32_t DEADLINE = 10;
291 };
292 
293 } // namespace ddt
294 
295 #endif /* DDTCLIENT_HPP_ */
296 
Definition: ddtClient.hpp:47
int32_t reply_time
Definition: ddtClient.hpp:202
std::atomic< bool > connected_to_broker
Definition: ddtClient.hpp:182
DdtLogger * logger
Definition: ddtClient.hpp:217
int32_t heartbeat_interval
Definition: ddtClient.hpp:207
std::map< std::string, std::string > subscriber_map
Definition: ddtClient.hpp:177
std::atomic< bool > heartbeat_active
Definition: ddtClient.hpp:187
std::string remote_broker_uri
Definition: ddtClient.hpp:192
bool get_compute_checksum(const std::string &data_stream_identifier) const
Definition: ddtClient.cpp:291
bool CheckPublisherExists(const std::string &data_stream_identifier) const
Definition: ddtClient.cpp:262
std::string GetPublishingUri(const std::string &data_stream_identifier) const
Definition: ddtClient.cpp:276
int32_t heartbeat_timeout
Definition: ddtClient.hpp:212
virtual ~DdtClient()
Definition: ddtClient.cpp:41
void UnregisterSubscriber(const std::string uuid)
Definition: ddtClient.cpp:175
std::string get_broker_uri() const
Definition: ddtClient.cpp:296
void AddUuid(std::string uuid, std::string dsi)
Definition: ddtClient.cpp:120
int32_t get_max_data_sample_size(const std::string &data_stream_identifier) const
Definition: ddtClient.cpp:281
void Init(const std::string remote_broker, const int32_t repl_time, const int32_t hb_interval, const int32_t hb_timeout, const std::string broker, DdtLogger *ddt_logger)
Definition: ddtClient.cpp:48
int32_t RegisterRemoteSubscriber(const std::string &subscriber_uuid, const std::string &data_stream_identifier, const int32_t latency, const int32_t deadline) const
Definition: ddtClient.cpp:267
std::string broker_uri
Definition: ddtClient.hpp:197
int32_t get_number_of_samples(const std::string &data_stream_identifier) const
Definition: ddtClient.cpp:286
bool CheckIfEmpty()
Definition: ddtClient.cpp:257
Definition: ddtLogger.hpp:51
Contains common used constants. This file shall contain constants that can be used by all application...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
Definition: ddtClient.hpp:39