20#ifndef DDTPUBLISHERSIMULATOR_HPP_
21#define DDTPUBLISHERSIMULATOR_HPP_
25#include <boost/bind/bind.hpp>
26#include <boost/filesystem.hpp>
27#include <boost/signals2/signal.hpp>
39namespace datatransfer = ::elt::ddt::datatransfer;
42using namespace boost::filesystem;
83 bool Init(const
int argc,
char** argv);
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;
134 const
int LATENCY = 10000;
135 const
int DEADLINE = 10;
142 bool CheckBytesPerPixel(std::vector<std::
string>& file_list);
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);
149 bool GetSimulationData(std::vector<std::
string>& file_list,
150 std::vector<cpl_image*>& images);
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;
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;
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;
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;
169 void FillMetaDataWCSItems(const cpl_propertylist* const property_list,
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;
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;
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;
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;
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;
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,
213 std::vector<std::vector<uint8_t>>& datavecs);
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);
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,
225 const std::vector<uint8_t>& datavec,
226 std::vector<std::
string>& descriptions);
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);
234 cpl_propertylist* LoadPropertyList(const std::
string file_name);
236 void LogNoSimDataFolder();
237 void LogNoDirectory();
238 void LogNoSimDataFiles();
240 int CreateAndRegPublisher(const
int vec_elems);
243 const std::vector<uint8_t>& datavec,
244 const int32_t sample_id);
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;
253 std::vector<uint8_t> GetDataVectorOscilloscope(const
int dim1);
254 std::vector<uint8_t> GetDataVectorMultiDimension(const
int dim1,
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;
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