ddt 1.4.0
 
Loading...
Searching...
No Matches
ddtPublisherSimulator.hpp
Go to the documentation of this file.
1
10
11#ifndef DDTPUBLISHERSIMULATOR_HPP_
12#define DDTPUBLISHERSIMULATOR_HPP_
13
14#include <cpl.h>
15
16#include <boost/bind/bind.hpp>
17#include <boost/filesystem.hpp>
18#include <boost/signals2/signal.hpp>
19#include <random>
20
27#include "ddt/ddtLogger.hpp"
28#include "ddt/ddtInitCodes.hpp"
30
31namespace datatransfer = ::elt::ddt::datatransfer;
32
33using namespace ddt;
34using namespace boost::filesystem;
35
36namespace ddt {
37
50
55 public:
60
65
71 ddt::InitCodes Init(int argc, char* argv[]);
72
77 int Run();
78
83 bool RunImageTransfer();
84
90
96
102
108
114 bool RunUnsignedIntegerTransfer(const unsigned int numBits);
115
116 private:
117 std::unique_ptr<DdtLogger> logger;
118
119 std::string broker_uri;
120 std::string data_stream_identifier;
121 int publishing_interval_milliseconds;
122 int num_samples_in_buffer;
123 std::string image_folder;
124 int mode;
125 bool checksum;
126
130 bool debug_log_enabled = false;
131
137 ddt::CommandLineParserResult ParseCommandLine(int argc, char* argv[]);
138
144 bool CheckBytesPerPixel(std::vector<std::string>& file_list);
145
146 void DetermineBytesPerPixelAndDataType(
147 const cpl_propertylist* const property_list, const cpl_image* const image,
148 int* const bytes_per_pixel, uint32_t* const data_type,
149 cpl_type* const cplImageType);
150
151 bool GetSimulationData(std::vector<std::string>& file_list,
152 std::vector<cpl_image*>& images);
153
154 void FillDataVectors(std::vector<std::vector<uint8_t>>& datavecs,
155 int& max_sample_size, std::vector<cpl_image*>& images,
156 const int num_images, const cpl_type cplImageType,
157 const int bytes_per_pixel) const;
158
159 void FillDataVectorInt(std::vector<std::vector<uint8_t>>& datavecs,
160 cpl_image* const image, const int vec_elems,
161 const int bytes_per_pixel) const;
162
163 void FillDataVectorFloat(std::vector<std::vector<uint8_t>>& datavecs,
164 cpl_image* const image, const int vec_elems,
165 const int bytes_per_pixel) const;
166
167 void FillDataVectorDouble(std::vector<std::vector<uint8_t>>& datavecs,
168 cpl_image* const image, const int vec_elems,
169 const int bytes_per_pixel) const;
170
171 void FillMetaDataWCSItems(const cpl_propertylist* const property_list,
172 MetaDataElementsImage3D& meta_data_img_3d);
173
174 void FillMetadataBase(MetaDataElementsImage3D& meta_data_img_3d,
175 const int bytes_per_pixel,
176 const uint32_t number_dimensions,
177 const bool complete_flag, const bool last_segment,
178 const bool byte_order_little_endian,
179 const uint32_t data_type) const;
180
181 void FillMetadataBase(MetaDataElementsImage2D& meta_data_img_2d,
182 const int bytes_per_pixel,
183 const uint32_t number_dimensions,
184 const bool complete_flag,
185 const bool byte_order_little_endian,
186 const uint32_t data_type) const;
187
188 void FillMetadataSpecific(MetaDataElementsImage3D& meta_data_img_3d,
189 const uint32_t number_pixels_x,
190 const uint32_t number_pixels_y,
191 const int32_t binning_factor_x,
192 const int32_t binning_factor_y,
193 const uint32_t number_layers,
194 const uint32_t item_size) const;
195
196 void FillMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
197 const uint32_t number_pixels_x,
198 const uint32_t number_pixels_y,
199 const int32_t binning_factor_x,
200 const int32_t binning_factor_y,
201 const uint32_t number_chunks_x,
202 const uint32_t number_chunks_y) const;
203
204 void CompleteMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
205 const uint32_t first_pixel_x,
206 const uint32_t first_pixel_y,
207 const bool last_segment,
208 const int32_t image_id) const;
209
210 void PublishDataImageTransfer(std::vector<cpl_image*>& images,
211 const int bytes_per_pixel,
212 const uint32_t data_type, const int num_images,
213 const int max_sample_size,
214 MetaDataElementsImage3D& meta_data_img_3d,
215 std::vector<std::vector<uint8_t>>& datavecs);
216
217 void PublishDataSegmentedImageTransfer(const int bytes_per_pixel,
218 const uint32_t number_pixels_x,
219 const uint32_t number_pixels_y,
220 const int vec_elems);
221
222 void PublishDataMultiDimension(const uint32_t bytes_per_value,
223 const int number_dimensions,
224 const uint32_t data_type,
225 const std::string array_dimensions,
226 const int vec_elems,
227 const std::vector<uint8_t>& datavec,
228 std::vector<std::string>& descriptions);
229
230 void PublishDataUnsignedIntegerTransfer(
231 const uint32_t bytes_per_value, const int dim1, const int dim2,
232 const int number_dimensions, const uint32_t data_type,
233 const int vec_elems, const std::vector<uint8_t>& datavec,
234 std::vector<std::string>& descriptions);
235
236 cpl_propertylist* LoadPropertyList(const std::string file_name);
237
238 void LogNoSimDataFolder();
239 void LogNoDirectory();
240 void LogNoSimDataFiles();
241
242 int CreateAndRegPublisher(const int vec_elems);
243 void TransferData(DdtEncDecBinaryxD* const enc_dec_binary_xd,
244 const MetaDataElementsBinaryxD& meta_data_binary_xd,
245 const std::vector<uint8_t>& datavec,
246 const int32_t sample_id);
247 void InitMetaDataBinaryXD(MetaDataElementsBinaryxD* const meta_data_binary_xd,
248 const uint32_t bytes_per_pixel,
249 const uint32_t number_dimensions,
250 const bool byte_order_little_endian,
251 const bool complete_flag, const bool last_segment,
252 const uint32_t data_type,
253 const std::string array_dimensions) const;
254
255 std::vector<uint8_t> GetDataVectorOscilloscope(const int dim1);
256 std::vector<uint8_t> GetDataVectorMultiDimension(const int dim1,
257 const int dim2,
258 const int dim3,
259 const int dim4);
260 void FillDataVectorNumericalSample(const int dim1, const int cnt,
261 std::vector<uint8_t>& datavec);
262 void FillDataVectorSegmentedImage(const uint32_t number_pixels_x,
263 const uint32_t number_pixels_y,
264 const int chunk_cnt_x,
265 const int chunk_cnt_y,
266 const uint32_t number_chunks_x,
267 std::vector<uint8_t>& datavec) const;
268
269 std::unique_ptr<DdtDataPublisher> publisher;
270};
271
272} // namespace ddt
273
274#endif /* DDTPUBLISHERSIMULATOR_HPP_ */
Definition ddtEncDecBinaryxD.hpp:39
int Run()
Definition ddtPublisherSimulator.cpp:119
ddt::InitCodes Init(int argc, char *argv[])
Definition ddtPublisherSimulator.cpp:83
bool RunUnsignedIntegerTransfer(const unsigned int numBits)
Definition ddtPublisherSimulator.cpp:713
bool RunSegmentedImageTransfer()
Definition ddtPublisherSimulator.cpp:1153
bool RunNumericalSampleArrayTransfer()
Definition ddtPublisherSimulator.cpp:991
DdtPublisherSimulator()
Definition ddtPublisherSimulator.cpp:75
bool RunImageTransfer()
Definition ddtPublisherSimulator.cpp:151
~DdtPublisherSimulator() final
Definition ddtPublisherSimulator.cpp:79
bool RunMultiDimensionalArrayTransfer()
Definition ddtPublisherSimulator.cpp:883
bool RunOscilloscopeTransfer()
Definition ddtPublisherSimulator.cpp:799
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:32
@ OSCILLOSCOPE
Definition ddtPublisherSimulator.hpp:43
@ MULTIDIM
Definition ddtPublisherSimulator.hpp:44
@ SEGMENTEDIMAGE
Definition ddtPublisherSimulator.hpp:46
@ CONFIGURATIONMAP
Definition ddtPublisherSimulator.hpp:45
@ IMAGETRANSFER
Definition ddtPublisherSimulator.hpp:42
InitCodes
Definition ddtInitCodes.hpp:15
CommandLineParserResult
Definition commandLineParser.hpp:29
PublisherModes
Definition ddtPublisherSimulator.hpp:41
@ UNSIGNEDINT32
Definition ddtPublisherSimulator.hpp:48
@ UNSIGNEDINT16
Definition ddtPublisherSimulator.hpp:47
Definition ddtEncDecBinaryxD.hpp:23
Definition ddtEncDecImage2D.hpp:24
Definition ddtEncDecImage3D.hpp:24