ddt  0.1
ddtDataPublisher.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 ddtDataPublisher.hpp
8 // @brief Data Publisher.
9 //
10 // This class provides the functionality for publisher applications to register
11 // / unregister at a local broker and to publish data for a specified data
12 // stream.
13 //
14 // @author Matthias Grimm, CGI
15 // @since 2020/01/16
16 //
17 
18 #ifndef SRC_DDTDATAPUBLISHER_H_
19 #define SRC_DDTDATAPUBLISHER_H_
20 
21 #include <boost/circular_buffer.hpp>
22 #include <boost/interprocess/managed_shared_memory.hpp>
23 #include <boost/signals2/signal.hpp>
24 
25 #include "ddt/ddtConstants.hpp"
27 
28 namespace ddt {
29 
36  public:
41 
45  explicit DdtDataPublisher(log4cplus::Logger const &log4cplusLogger);
46 
50  ~DdtDataPublisher() override;
51 
52  int RegisterPublisher(const std::string uri, const std::string dsi,
53  const bool compute_crc) override;
54 
55  int UnregisterPublisher() override;
56 
57  void PublishData() override;
58 
62  void SetBufferSize(const int max_sample_size, const int number_samples);
63 
67  void WriteData(const int32_t sample_id, const std::vector<uint8_t> &datavec,
68  const std::vector<uint8_t> &metadatavec);
69 
74  void WriteData(const int32_t sample_id, const uint8_t *const data,
75  const int32_t data_size, const uint8_t *const metadata,
76  const int32_t metadata_size);
77 
81  void set_topic_id(const int id);
82 
86  bool get_connected_to_broker() const;
87 
88  protected:
92  void LoadDefaults();
93 
97  void ReadIni();
98 
102  int topic_id;
103 
104  private:
108  void Init();
109 
113  void PrintConfigValues();
114 
119  void Reregister();
120 
124  void PrintParameters();
125 
129  int Register();
130 
131  DdtMemoryAccessor *memory_accessor;
132  std::string shm_id;
133  std::string broker_uri;
134  std::string data_stream_identifier;
135  int writer_index;
136  int max_data_sample_size;
137  int number_of_samples;
138 
139  bool compute_checksum;
140  std::string publishing_uri;
141 };
142 
143 } // namespace ddt
144 
145 #endif /* SRC_DDTDATAPUBLISHER_H_ */
ddt::DdtDataPublisher::UnregisterPublisher
int UnregisterPublisher() override
Definition: ddtDataPublisher.cpp:299
ddt::DdtDataPublisher::RegisterPublisher
int RegisterPublisher(const std::string uri, const std::string dsi, const bool compute_crc) override
Definition: ddtDataPublisher.cpp:111
ddt::DdtDataPublisher::~DdtDataPublisher
~DdtDataPublisher() override
Definition: ddtDataPublisher.cpp:38
ddt::DdtDataPublisher::LoadDefaults
void LoadDefaults()
Definition: ddtDataPublisher.cpp:59
ddt::DdtLogger
Definition: ddtLogger.hpp:48
ddt::DdtMemoryAccessor
Definition: ddtMemoryAccessor.hpp:257
ddtConstants.hpp
ddt
Definition: ddtClient.hpp:36
ddt::DdtDataPublisher::set_topic_id
void set_topic_id(const int id)
Definition: ddtDataPublisher.cpp:381
ddt::DdtDataPublisher::SetBufferSize
void SetBufferSize(const int max_sample_size, const int number_samples)
Definition: ddtDataPublisher.cpp:321
ddt::DdtDataPublisher::DdtDataPublisher
DdtDataPublisher(DdtLogger *logger)
Definition: ddtDataPublisher.cpp:22
ddt::DdtDataPublisher
Definition: ddtDataPublisher.hpp:35
ddt::DdtDataPublisher::PublishData
void PublishData() override
Definition: ddtDataPublisher.cpp:367
ddt::DdtDataPublisher::topic_id
int topic_id
Definition: ddtDataPublisher.hpp:102
ddt::DdtDataPublisher::get_connected_to_broker
bool get_connected_to_broker() const
Definition: ddtDataPublisher.cpp:383
ddtDataTransferLib.hpp
ddt::DdtDataTransferLib::logger
DdtLogger * logger
Definition: ddtDataTransferLib.hpp:182
ddt::DdtDataPublisher::WriteData
void WriteData(const int32_t sample_id, const std::vector< uint8_t > &datavec, const std::vector< uint8_t > &metadatavec)
Definition: ddtDataPublisher.cpp:327
ddt::DdtDataPublisher::ReadIni
void ReadIni()
Definition: ddtDataPublisher.cpp:61
ddt::DdtDataTransferLib
Definition: ddtDataTransferLib.hpp:39