ddt  0.1
ddtDataProducer.hpp
Go to the documentation of this file.
1 // @copyright
2 // (c) Copyright ESO 2020
3 // All Rights Reserved
4 // ESO (eso.org) is an Intergovernmental Organization, and therefore special
5 // legal conditions apply.
6 //
7 // @file ddtDataProducer.hpp
8 // @brief Data Producer.
9 //
10 // This class provides the functionality to publish data over network
11 // and enables sending new data notifications.
12 //
13 // @author Matthias Grimm, CGI
14 // @since 2020/01/16
15 //
16 
17 #ifndef DDTDATAPRODUCER_HPP_
18 #define DDTDATAPRODUCER_HPP_
19 
21 
22 namespace mal = ::elt::mal;
23 namespace datatransfer = ::elt::ddt::datatransfer;
24 
25 static const std::chrono::milliseconds PUBLISH_TIMEOUT{450};
26 
27 namespace ddt {
28 
34  public:
38  DdtDataProducer(const std::string& data_stream_identifier, DdtLogger* logger);
39 
43  DdtDataProducer(const std::string& data_stream_identifier, int32_t latency,
44  int32_t deadline, std::string publishing_uri,
45  DdtLogger* logger);
46 
50  virtual ~DdtDataProducer();
51 
55  void Publish(DataPacket data_packet);
56 
62 
66  std::string get_publishing_uri();
67 
68  private:
72  void Initialize(const std::string& data_stream_identifier, int32_t latency,
73  int32_t deadline, std::string publishing_uri,
74  DdtLogger* logger);
75 
79  std::string CreatePublishingUri(const std::string& data_stream_identifier);
80 
81  std::unique_ptr<mal::ps::InstancePublisher<datatransfer::DataPacket>,
82  std::default_delete<
83  mal::ps::InstancePublisher<datatransfer::DataPacket> > >
84  data_publisher;
85  std::shared_ptr<datatransfer::DataPacket> ddt_data_packet;
86 
87  double timestamp_prev;
88  std::string publishing_uri;
89 };
90 
91 } // namespace ddt
92 
93 #endif /* DDTDATAPRODUCER_HPP_ */
ddt::DdtDataProducer::get_publishing_uri
std::string get_publishing_uri()
Definition: ddtDataProducer.cpp:150
ddt::DdtDataProducer::Notify
void Notify(NotificationType)
Definition: ddtDataProducer.cpp:112
ddt::DdtDataProducer::Publish
void Publish(DataPacket data_packet)
Definition: ddtDataProducer.cpp:70
ddt::DdtDataProducer
Definition: ddtDataProducer.hpp:33
ddt::DdtLogger
Definition: ddtLogger.hpp:71
ddt
Definition: ddtClient.hpp:36
ddtProducerConsumerBase.hpp
ddt::DdtDataProducer::~DdtDataProducer
virtual ~DdtDataProducer()
ddt::DataPacket
Definition: ddtMemoryAccessor.hpp:214
ddt::DdtProducerConsumerBase::NotificationType
NotificationType
Definition: ddtProducerConsumerBase.hpp:58
ddt::DdtDataProducer::DdtDataProducer
DdtDataProducer(const std::string &data_stream_identifier, DdtLogger *logger)
Definition: ddtDataProducer.cpp:21
ddt::DdtProducerConsumerBase
Definition: ddtProducerConsumerBase.hpp:39
ddt::DdtProducerConsumerBase::logger
DdtLogger * logger
Definition: ddtProducerConsumerBase.hpp:117