ddt 1.2.1
Loading...
Searching...
No Matches
ddtPublisherSimulator.hpp
Go to the documentation of this file.
1
20#ifndef DDTPUBLISHERSIMULATOR_HPP_
21#define DDTPUBLISHERSIMULATOR_HPP_
22
23#include <cpl.h>
24
25#include <boost/bind/bind.hpp>
26#include <boost/filesystem.hpp>
27#include <boost/signals2/signal.hpp>
28#include <random>
29
36#include "ddt/ddtLogger.hpp"
37#include "ddt/ddtInitCodes.hpp"
39
40namespace datatransfer = ::elt::ddt::datatransfer;
41
42using namespace ddt;
43using namespace boost::filesystem;
44
45namespace ddt {
46
59
64 public:
69
74
80 ddt::InitCodes Init(int argc, char* argv[]);
81
86 int Run();
87
92 bool RunImageTransfer();
93
99
105
111
117
123 bool RunUnsignedIntegerTransfer(const unsigned int numBits);
124
125 private:
126 std::unique_ptr<DdtLogger> logger;
127
128 std::string broker_uri;
129 std::string data_stream_identifier;
130 int publishing_interval_milliseconds;
131 int num_samples_in_buffer;
132 std::string image_folder;
133 int mode;
134 bool checksum;
135
139 bool debug_log_enabled = false;
140
146 ddt::CommandLineParserResult ParseCommandLine(int argc, char* argv[]);
147
153 bool CheckBytesPerPixel(std::vector<std::string>& file_list);
154
155 void DetermineBytesPerPixelAndDataType(
156 const cpl_propertylist* const property_list, const cpl_image* const image,
157 int* const bytes_per_pixel, uint32_t* const data_type,
158 cpl_type* const cplImageType);
159
160 bool GetSimulationData(std::vector<std::string>& file_list,
161 std::vector<cpl_image*>& images);
162
163 void FillDataVectors(std::vector<std::vector<uint8_t>>& datavecs,
164 int& max_sample_size, std::vector<cpl_image*>& images,
165 const int num_images, const cpl_type cplImageType,
166 const int bytes_per_pixel) const;
167
168 void FillDataVectorInt(std::vector<std::vector<uint8_t>>& datavecs,
169 cpl_image* const image, const int vec_elems,
170 const int bytes_per_pixel) const;
171
172 void FillDataVectorFloat(std::vector<std::vector<uint8_t>>& datavecs,
173 cpl_image* const image, const int vec_elems,
174 const int bytes_per_pixel) const;
175
176 void FillDataVectorDouble(std::vector<std::vector<uint8_t>>& datavecs,
177 cpl_image* const image, const int vec_elems,
178 const int bytes_per_pixel) const;
179
180 void FillMetaDataWCSItems(const cpl_propertylist* const property_list,
181 MetaDataElementsImage3D& meta_data_img_3d);
182
183 void FillMetadataBase(MetaDataElementsImage3D& meta_data_img_3d,
184 const int bytes_per_pixel,
185 const uint32_t number_dimensions,
186 const bool complete_flag, const bool last_segment,
187 const bool byte_order_little_endian,
188 const uint32_t data_type) const;
189
190 void FillMetadataBase(MetaDataElementsImage2D& meta_data_img_2d,
191 const int bytes_per_pixel,
192 const uint32_t number_dimensions,
193 const bool complete_flag,
194 const bool byte_order_little_endian,
195 const uint32_t data_type) const;
196
197 void FillMetadataSpecific(MetaDataElementsImage3D& meta_data_img_3d,
198 const uint32_t number_pixels_x,
199 const uint32_t number_pixels_y,
200 const int32_t binning_factor_x,
201 const int32_t binning_factor_y,
202 const uint32_t number_layers,
203 const uint32_t item_size) const;
204
205 void FillMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
206 const uint32_t number_pixels_x,
207 const uint32_t number_pixels_y,
208 const int32_t binning_factor_x,
209 const int32_t binning_factor_y,
210 const uint32_t number_chunks_x,
211 const uint32_t number_chunks_y) const;
212
213 void CompleteMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
214 const uint32_t first_pixel_x,
215 const uint32_t first_pixel_y,
216 const bool last_segment,
217 const int32_t image_id) const;
218
219 void PublishDataImageTransfer(std::vector<cpl_image*>& images,
220 const int bytes_per_pixel,
221 const uint32_t data_type, const int num_images,
222 const int max_sample_size,
223 MetaDataElementsImage3D& meta_data_img_3d,
224 std::vector<std::vector<uint8_t>>& datavecs);
225
226 void PublishDataSegmentedImageTransfer(const int bytes_per_pixel,
227 const uint32_t number_pixels_x,
228 const uint32_t number_pixels_y,
229 const int vec_elems);
230
231 void PublishDataMultiDimension(const uint32_t bytes_per_value,
232 const int number_dimensions,
233 const uint32_t data_type,
234 const std::string array_dimensions,
235 const int vec_elems,
236 const std::vector<uint8_t>& datavec,
237 std::vector<std::string>& descriptions);
238
239 void PublishDataUnsignedIntegerTransfer(
240 const uint32_t bytes_per_value, const int dim1, const int dim2,
241 const int number_dimensions, const uint32_t data_type,
242 const int vec_elems, const std::vector<uint8_t>& datavec,
243 std::vector<std::string>& descriptions);
244
245 cpl_propertylist* LoadPropertyList(const std::string file_name);
246
247 void LogNoSimDataFolder();
248 void LogNoDirectory();
249 void LogNoSimDataFiles();
250
251 int CreateAndRegPublisher(const int vec_elems);
252 void TransferData(DdtEncDecBinaryxD* const enc_dec_binary_xd,
253 const MetaDataElementsBinaryxD& meta_data_binary_xd,
254 const std::vector<uint8_t>& datavec,
255 const int32_t sample_id);
256 void InitMetaDataBinaryXD(MetaDataElementsBinaryxD* const meta_data_binary_xd,
257 const uint32_t bytes_per_pixel,
258 const uint32_t number_dimensions,
259 const bool byte_order_little_endian,
260 const bool complete_flag, const bool last_segment,
261 const uint32_t data_type,
262 const std::string array_dimensions) const;
263
264 std::vector<uint8_t> GetDataVectorOscilloscope(const int dim1);
265 std::vector<uint8_t> GetDataVectorMultiDimension(const int dim1,
266 const int dim2,
267 const int dim3,
268 const int dim4);
269 void FillDataVectorNumericalSample(const int dim1, const int cnt,
270 std::vector<uint8_t>& datavec);
271 void FillDataVectorSegmentedImage(const uint32_t number_pixels_x,
272 const uint32_t number_pixels_y,
273 const int chunk_cnt_x,
274 const int chunk_cnt_y,
275 const uint32_t number_chunks_x,
276 std::vector<uint8_t>& datavec) const;
277
278 std::unique_ptr<DdtDataPublisher> publisher;
279};
280
281} // namespace ddt
282
283#endif /* DDTPUBLISHERSIMULATOR_HPP_ */
284
Definition ddtEncDecBinaryxD.hpp:48
Definition ddtDataPublisherApplication.hpp:28
Definition ddtPublisherSimulator.hpp:63
int Run()
Definition ddtPublisherSimulator.cpp:128
ddt::InitCodes Init(int argc, char *argv[])
Definition ddtPublisherSimulator.cpp:92
bool RunUnsignedIntegerTransfer(const unsigned int numBits)
Definition ddtPublisherSimulator.cpp:722
bool RunSegmentedImageTransfer()
Definition ddtPublisherSimulator.cpp:1162
bool RunNumericalSampleArrayTransfer()
Definition ddtPublisherSimulator.cpp:1000
DdtPublisherSimulator()
Definition ddtPublisherSimulator.cpp:84
bool RunImageTransfer()
Definition ddtPublisherSimulator.cpp:160
~DdtPublisherSimulator() final
Definition ddtPublisherSimulator.cpp:88
bool RunMultiDimensionalArrayTransfer()
Definition ddtPublisherSimulator.cpp:892
bool RunOscilloscopeTransfer()
Definition ddtPublisherSimulator.cpp:808
Class for parsing command line arguments. The commandline parser shall parse the required arguments f...
Simulator for sending data. This is a base class for data publisher applications.
Data Publisher. This class provides the functionality for publisher applications to register / unregi...
Factory for DdtDataPublishers and DdtDataSubscribers. This class provides factory methods for creatin...
DDT EncDecMultiDim. Class to encode / decode multi-dimensional array data samples....
DDT EncDecImage2D. Class to encode / decode 2-dimensional data samples containing image data....
DDT EncDecMultiLayer. Class to encode / decode multi-layer image data samples. Class to encode / deco...
Contains return codes for Init() method. This file shall contain return codes that can be used by all...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
Definition ddtClient.hpp:39
@ OSCILLOSCOPE
Definition ddtPublisherSimulator.hpp:52
@ MULTIDIM
Definition ddtPublisherSimulator.hpp:53
@ SEGMENTEDIMAGE
Definition ddtPublisherSimulator.hpp:55
@ CONFIGURATIONMAP
Definition ddtPublisherSimulator.hpp:54
@ IMAGETRANSFER
Definition ddtPublisherSimulator.hpp:51
InitCodes
Definition ddtInitCodes.hpp:24
CommandLineParserResult
Definition commandLineParser.hpp:38
PublisherModes
Definition ddtPublisherSimulator.hpp:50
@ UNSIGNEDINT32
Definition ddtPublisherSimulator.hpp:57
@ UNSIGNEDINT16
Definition ddtPublisherSimulator.hpp:56
Definition ddtEncDecBinaryxD.hpp:32
Definition ddtEncDecImage2D.hpp:33
Definition ddtEncDecImage3D.hpp:33