ddt 1.1.0
Loading...
Searching...
No Matches
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
36namespace mal = ::elt::mal;
37namespace datatransfer = ::elt::ddt::datatransfer;
38
39namespace ddt {
40
47class 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
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