ddt  1.0.0
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 
34 namespace mal = ::elt::mal;
35 namespace datatransfer = ::elt::ddt::datatransfer;
36 
37 namespace 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 
180  int latency;
181 
185  int deadline;
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 
239  DdtLogger* my_logger = nullptr;
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
DdtDataTransferLib(DdtLogger *ddt_logger)
Definition: ddtDataTransferLib.cpp:25
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