ddt 1.1.0
Loading...
Searching...
No Matches
ddtDataTransferLib.hpp
Go to the documentation of this file.
1
19#ifndef DDTDATATRANSFERLIB_HPP_
20#define DDTDATATRANSFERLIB_HPP_
21
22#include <Ddtdatatransfericd.hpp>
23#include <boost/property_tree/ini_parser.hpp>
24#include <boost/property_tree/ptree.hpp>
25#include <iostream>
26#include <mal/Cii.hpp>
27#include <mal/rr/qos/ReplyTime.hpp>
28#include <mal/utility/LoadMal.hpp>
29
30#include "ddt/ddtErrorCodes.hpp"
31#include "ddt/ddtLogger.hpp"
33
34namespace mal = ::elt::mal;
35namespace datatransfer = ::elt::ddt::datatransfer;
36
37namespace ddt {
38
43 public:
48 explicit DdtDataTransferLib(DdtLogger* ddt_logger);
49
55 explicit DdtDataTransferLib(log4cplus::Logger const& log4cplus_logger);
56
60 virtual ~DdtDataTransferLib();
61
69 void SetQoS(const int ddt_latency, const int ddt_deadline);
70
78 const std::string VerifyPathInBrokerUri(std::string broker_uri);
79
85 int InitMAL(const std::string broker_uri);
86
91 std::unique_ptr<datatransfer::DataBrokerRegistrationSync,
92 std::default_delete<datatransfer::DataBrokerRegistrationSync>>
94
103 virtual int RegisterPublisher(const std::string uri, const std::string dsi,
104 const bool compute_crc) {
105 return 0;
106 };
107
112 virtual int UnregisterPublisher() { return 0; };
113
117 virtual void PublishData() {
118 // intentionally-blank override
119 }
120
130 virtual int RegisterSubscriber(const std::string uri, const std::string dsi,
131 const std::string remote_uri,
132 const int32_t interval = 10) {
133 return 0;
134 };
135
140 virtual int UnregisterSubscriber() { return 0; };
141
146 virtual DataSample* ReadData() { return nullptr; };
147
148 protected:
155 void StartHeartbeat(const int32_t interval, const std::string id);
156
160 void StopHeartbeat();
161
168 void CheckHeartbeatTimeout(int32_t& new_reply_time);
169
175 const std::string GetConfigFilePath();
176
181
186
190 int32_t reply_time;
191
196
200 std::promise<void> exit_signal_heartbeat;
201
205 std::future<void> future_object_heartbeat;
206
211 std::atomic<bool> heartbeat_active;
212
216 std::unique_ptr<
217 datatransfer::DataBrokerRegistrationSync,
218 std::default_delete<datatransfer::DataBrokerRegistrationSync> >
220
224 std::atomic<bool> connected_to_broker;
225
229 elt::mal::rr::ListenerRegistration connection_listener;
230
235
240
244 const int32_t REPLY_TIME_DEFAULT = 6;
245
249 const int32_t REPLY_TIME_MIN = 2;
250
251 private:
255 void Init(DdtLogger* ddt_logger);
256
260 void HeartbeatThread();
261
262 std::string identifier;
263
264 const std::string BROKER_PATH{"/broker/Broker1"};
265 const int LATENCY_DEFAULT = 10000;
266 const int DEADLINE_DEFAULT = 10;
267 const int32_t HEARTBEAT_INTERVAL_DEFAULT = 1;
268};
269
270} // namespace ddt
271
272#endif /* DDTDATATRANSFERLIB_HPP_ */
273
Definition: ddtDataTransferLib.hpp:42
const std::string VerifyPathInBrokerUri(std::string broker_uri)
Definition: ddtDataTransferLib.cpp:205
DdtLogger * logger
Definition: ddtDataTransferLib.hpp:234
virtual DataSample * ReadData()
Definition: ddtDataTransferLib.hpp:146
void SetQoS(const int ddt_latency, const int ddt_deadline)
Definition: ddtDataTransferLib.cpp:51
virtual int UnregisterSubscriber()
Definition: ddtDataTransferLib.hpp:140
void StopHeartbeat()
Definition: ddtDataTransferLib.cpp:75
const std::string GetConfigFilePath()
Definition: ddtDataTransferLib.cpp:238
virtual int RegisterSubscriber(const std::string uri, const std::string dsi, const std::string remote_uri, const int32_t interval=10)
Definition: ddtDataTransferLib.hpp:130
const int32_t REPLY_TIME_DEFAULT
Definition: ddtDataTransferLib.hpp:244
void StartHeartbeat(const int32_t interval, const std::string id)
Definition: ddtDataTransferLib.cpp:56
const int32_t REPLY_TIME_MIN
Definition: ddtDataTransferLib.hpp:249
std::unique_ptr< datatransfer::DataBrokerRegistrationSync, std::default_delete< datatransfer::DataBrokerRegistrationSync > > client
Definition: ddtDataTransferLib.hpp:219
int deadline
Definition: ddtDataTransferLib.hpp:185
std::unique_ptr< datatransfer::DataBrokerRegistrationSync, std::default_delete< datatransfer::DataBrokerRegistrationSync > > GetBrokerClient()
Definition: ddtDataTransferLib.cpp:234
int32_t heartbeat_interval
Definition: ddtDataTransferLib.hpp:195
DdtLogger * my_logger
Definition: ddtDataTransferLib.hpp:239
std::atomic< bool > heartbeat_active
Definition: ddtDataTransferLib.hpp:211
int latency
Definition: ddtDataTransferLib.hpp:180
virtual void PublishData()
Definition: ddtDataTransferLib.hpp:117
std::promise< void > exit_signal_heartbeat
Definition: ddtDataTransferLib.hpp:200
void CheckHeartbeatTimeout(int32_t &new_reply_time)
Definition: ddtDataTransferLib.cpp:111
std::atomic< bool > connected_to_broker
Definition: ddtDataTransferLib.hpp:224
virtual int UnregisterPublisher()
Definition: ddtDataTransferLib.hpp:112
elt::mal::rr::ListenerRegistration connection_listener
Definition: ddtDataTransferLib.hpp:229
std::future< void > future_object_heartbeat
Definition: ddtDataTransferLib.hpp:205
virtual ~DdtDataTransferLib()
Definition: ddtDataTransferLib.cpp:35
int InitMAL(const std::string broker_uri)
Definition: ddtDataTransferLib.cpp:146
int32_t reply_time
Definition: ddtDataTransferLib.hpp:190
virtual int RegisterPublisher(const std::string uri, const std::string dsi, const bool compute_crc)
Definition: ddtDataTransferLib.hpp:103
Definition: ddtLogger.hpp:51
Contains common used error codes. This file shall contain error codes that can be used by all applica...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
Accessor for a shared memory. This class provides the functionalities to access created shared memori...
Definition: ddtClient.hpp:39
Definition: ddtMemoryAccessor.hpp:184