ddt 1.1.0
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
37#include "ddt/ddtLogger.hpp"
38
39namespace datatransfer = ::elt::ddt::datatransfer;
40
41using namespace ddt;
42using namespace boost::filesystem;
43
44namespace ddt {
45
56 UNSIGNEDINT32 = 7
57};
58
63 public:
68
73
78 int Run();
79
83 bool Init(const int argc, char** argv);
84
89 int RunImageTransfer();
90
96
102
108
114
120 int RunUnsignedIntegerTransfer(const unsigned int numBits);
121
122 private:
123 DdtLogger* logger;
125
126 std::string broker_uri;
127 std::string data_stream_identifier;
128 int publishing_interval;
129 int num_samples_in_buffer;
130 std::string image_folder;
131 int mode;
132 bool checksum;
133
134 const int LATENCY = 10000;
135 const int DEADLINE = 10;
136
142 bool CheckBytesPerPixel(std::vector<std::string>& file_list);
143
144 void DetermineBytesPerPixelAndDataType(
145 const cpl_propertylist* const property_list, const cpl_image* const image,
146 int* const bytes_per_pixel, uint32_t* const data_type,
147 cpl_type* const cplImageType);
148
149 bool GetSimulationData(std::vector<std::string>& file_list,
150 std::vector<cpl_image*>& images);
151
152 void FillDataVectors(std::vector<std::vector<uint8_t>>& datavecs,
153 int& max_sample_size, std::vector<cpl_image*>& images,
154 const int num_images, const cpl_type cplImageType,
155 const int bytes_per_pixel) const;
156
157 void FillDataVectorInt(std::vector<std::vector<uint8_t>>& datavecs,
158 cpl_image* const image, const int vec_elems,
159 const int bytes_per_pixel) const;
160
161 void FillDataVectorFloat(std::vector<std::vector<uint8_t>>& datavecs,
162 cpl_image* const image, const int vec_elems,
163 const int bytes_per_pixel) const;
164
165 void FillDataVectorDouble(std::vector<std::vector<uint8_t>>& datavecs,
166 cpl_image* const image, const int vec_elems,
167 const int bytes_per_pixel) const;
168
169 void FillMetaDataWCSItems(const cpl_propertylist* const property_list,
170 MetaDataElementsImage3D& meta_data_img_3d);
171
172 void FillMetadataBase(MetaDataElementsImage3D& meta_data_img_3d,
173 const int bytes_per_pixel,
174 const uint32_t number_dimensions,
175 const bool complete_flag, const bool last_segment,
176 const bool byte_order_little_endian,
177 const uint32_t data_type) const;
178
179 void FillMetadataBase(MetaDataElementsImage2D& meta_data_img_2d,
180 const int bytes_per_pixel,
181 const uint32_t number_dimensions,
182 const bool complete_flag,
183 const bool byte_order_little_endian,
184 const uint32_t data_type) const;
185
186 void FillMetadataSpecific(MetaDataElementsImage3D& meta_data_img_3d,
187 const uint32_t number_pixels_x,
188 const uint32_t number_pixels_y,
189 const int32_t binning_factor_x,
190 const int32_t binning_factor_y,
191 const uint32_t number_layers,
192 const uint32_t item_size) const;
193
194 void FillMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
195 const uint32_t number_pixels_x,
196 const uint32_t number_pixels_y,
197 const int32_t binning_factor_x,
198 const int32_t binning_factor_y,
199 const uint32_t number_chunks_x,
200 const uint32_t number_chunks_y) const;
201
202 void CompleteMetadataSpecific(MetaDataElementsImage2D& meta_data_img_2d,
203 const uint32_t first_pixel_x,
204 const uint32_t first_pixel_y,
205 const bool last_segment,
206 const int32_t image_id) const;
207
208 void PublishDataImageTransfer(std::vector<cpl_image*>& images,
209 const int bytes_per_pixel,
210 const uint32_t data_type, const int num_images,
211 const int max_sample_size,
212 MetaDataElementsImage3D& meta_data_img_3d,
213 std::vector<std::vector<uint8_t>>& datavecs);
214
215 void PublishDataSegmentedImageTransfer(const int bytes_per_pixel,
216 const uint32_t number_pixels_x,
217 const uint32_t number_pixels_y,
218 const int vec_elems);
219
220 void PublishDataMultiDimension(const uint32_t bytes_per_value,
221 const int number_dimensions,
222 const uint32_t data_type,
223 const std::string array_dimensions,
224 const int vec_elems,
225 const std::vector<uint8_t>& datavec,
226 std::vector<std::string>& descriptions);
227
228 void PublishDataUnsignedIntegerTransfer(
229 const uint32_t bytes_per_value, const int dim1, const int dim2,
230 const int number_dimensions, const uint32_t data_type,
231 const int vec_elems, const std::vector<uint8_t>& datavec,
232 std::vector<std::string>& descriptions);
233
234 cpl_propertylist* LoadPropertyList(const std::string file_name);
235
236 void LogNoSimDataFolder();
237 void LogNoDirectory();
238 void LogNoSimDataFiles();
239
240 int CreateAndRegPublisher(const int vec_elems);
241 void TransferData(DdtEncDecBinaryxD* const enc_dec_binary_xd,
242 const MetaDataElementsBinaryxD& meta_data_binary_xd,
243 const std::vector<uint8_t>& datavec,
244 const int32_t sample_id);
245 void InitMetaDataBinaryXD(MetaDataElementsBinaryxD* const meta_data_binary_xd,
246 const uint32_t bytes_per_pixel,
247 const uint32_t number_dimensions,
248 const bool byte_order_little_endian,
249 const bool complete_flag, const bool last_segment,
250 const uint32_t data_type,
251 const std::string array_dimensions) const;
252
253 std::vector<uint8_t> GetDataVectorOscilloscope(const int dim1);
254 std::vector<uint8_t> GetDataVectorMultiDimension(const int dim1,
255 const int dim2,
256 const int dim3,
257 const int dim4);
258 void FillDataVectorNumericalSample(const int dim1, const int cnt,
259 std::vector<uint8_t>& datavec);
260 void FillDataVectorSegmentedImage(const uint32_t number_pixels_x,
261 const uint32_t number_pixels_y,
262 const int chunk_cnt_x,
263 const int chunk_cnt_y,
264 const uint32_t number_chunks_x,
265 std::vector<uint8_t>& datavec) const;
266
267 std::unique_ptr<DdtDataPublisher> publisher;
268};
269
270} // namespace ddt
271
272#endif /* DDTPUBLISHERSIMULATOR_HPP_ */
273
Definition: ddtEncDecBinaryxD.hpp:48
Definition: commandLineParserBuilder.hpp:28
Definition: ddtDataPublisherApplication.hpp:28
Definition: ddtDataPublisher.hpp:38
Definition: ddtLogger.hpp:51
Definition: ddtPublisherSimulator.hpp:62
int Run()
Definition: ddtPublisherSimulator.cpp:152
int RunNumericalSampleArrayTransfer()
Definition: ddtPublisherSimulator.cpp:1048
int RunUnsignedIntegerTransfer(const unsigned int numBits)
Definition: ddtPublisherSimulator.cpp:773
bool Init(const int argc, char **argv)
Definition: ddtPublisherSimulator.cpp:116
int RunOscilloscopeTransfer()
Definition: ddtPublisherSimulator.cpp:857
int RunImageTransfer()
Definition: ddtPublisherSimulator.cpp:188
int RunMultiDimensionalArrayTransfer()
Definition: ddtPublisherSimulator.cpp:939
int RunSegmentedImageTransfer()
Definition: ddtPublisherSimulator.cpp:1213
~DdtPublisherSimulator() final
Definition: ddtPublisherSimulator.cpp:105
Builder for the command line parser.
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...
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:51
@ MULTIDIM
Definition: ddtPublisherSimulator.hpp:52
@ SEGMENTEDIMAGE
Definition: ddtPublisherSimulator.hpp:54
@ CONFIGURATIONMAP
Definition: ddtPublisherSimulator.hpp:53
@ IMAGETRANSFER
Definition: ddtPublisherSimulator.hpp:50
PublisherModes
Definition: ddtPublisherSimulator.hpp:49
@ UNSIGNEDINT32
Definition: ddtPublisherSimulator.hpp:56
@ UNSIGNEDINT16
Definition: ddtPublisherSimulator.hpp:55
Definition: ddtEncDecBinaryxD.hpp:32
Definition: ddtEncDecImage2D.hpp:33
Definition: ddtEncDecImage3D.hpp:33