ddt  1.0.0
ddtSubscriberSimulator.hpp
Go to the documentation of this file.
1 
21 #ifndef DDTSUBSCRIBERSIMULATOR_HPP_
22 #define DDTSUBSCRIBERSIMULATOR_HPP_
23 
24 #include <cpl.h>
25 #undef I
26 #undef arg
27 
28 #include <algorithm>
29 #include <boost/algorithm/string.hpp>
30 #include <boost/bind/bind.hpp>
31 #include <boost/signals2/signal.hpp>
32 #include <iostream>
33 #include <typeinfo>
34 
40 #include "ddt/ddtEncDecImage2D.hpp"
41 #include "ddt/ddtEncDecImage3D.hpp"
42 #include "ddt/ddtLogger.hpp"
43 #include "ddt/imageBuffer.hpp"
44 #include "ddt/imageIO.hpp"
45 #include "ddt/initCpl.hpp"
46 
47 namespace mal = ::elt::mal;
48 namespace datatransfer = ::elt::ddt::datatransfer;
49 
50 namespace ddt {
51 
56  IMAGETRANSFER = 1,
57  OSCILLOSCOPE = 2,
58  MULTIDIM = 3,
59  CONFIGURATIONMAP = 4,
60  SEGMENTEDIMAGE = 5
61 };
62 
66 union R4 {
70  float i;
71 
75  unsigned char c[4];
76 };
77 
82  public:
87 
92 
97  int Run() final;
98 
102  bool Init(int argc, char** argv);
103 
108  int RunTransfer();
109 
110  private:
111  void ProcessNewData() final;
112  void ProcessNewDataOsc();
113  void ProcessNewDataMultiDim();
114  void PrintStatistics();
115  void DumpAsFile(ddt::DataSample* const data_sample, const std::shared_ptr<DdtEncDec> encDec);
116 
117  cpl_image* CreateNewImageFromDataSample(ddt::DataSample* const sample,
118  const int bytes_per_pixel,
119  const int num_pix_x,
120  const int num_pix_y,
121  const uint32_t data_type,
122  bool* const unwrap_only);
123  cpl_propertylist* LoadWCSFromMetadata(const std::shared_ptr<DdtEncDec> enc_dec);
124 
125  void LogMetaDataBase(DataSample* const data_sample,
126  const std::shared_ptr<DdtEncDec> enc_dec);
127  void LogMetaDataImage2D(DataSample* const data_sample,
128  const std::shared_ptr<DdtEncDecImage2D> enc_dec_2d);
129  void LogMetaDataImage3D(DataSample* const data_sample,
130  const std::shared_ptr<DdtEncDecImage3D> enc_dec_3d);
131  void LogMetaDataBinaryxD(DataSample* const data_sample,
132  const std::shared_ptr<DdtEncDecBinaryxD> enc_dec_xd);
133  void LogSimulatorStart(const std::string use_case);
134  void LogWcsInfo(std::shared_ptr<DdtEncDec> enc_dec);
135 
136  std::vector<std::string> GetDimensions(DataSample* const data_sample);
137 
138  std::unique_ptr<DdtDataSubscriber> subscriber;
139 
140  DdtLogger* logger = nullptr;
141  CommandLineParserBuilder* builder = nullptr;
142 
143  std::string broker_uri;
144  std::string data_stream_identifier;
145  int reading_interval = 10;
146  std::string remote_broker_uri;
147  int mode = 1;
148  bool statistics = false;
149  bool dump_data = false;
150  std::string dump_folder;
151 
152  std::atomic<bool> processing_active;
153 
154  boost::signals2::connection connection;
155 
156  const int BYTES_STEP = 2;
157 };
158 
159 } // namespace ddt
160 
161 #endif /* DDTSUBSCRIBERSIMULATOR_HPP_ */
162 
Definition: ddtEncDecBinaryxD.hpp:48
Definition: ddtEncDecImage2D.hpp:57
Definition: ddtEncDecImage3D.hpp:54
Definition: ddtEncDec.hpp:63
Definition: commandLineParserBuilder.hpp:28
Definition: ddtDataSubscriberApplication.hpp:28
Definition: ddtDataSubscriber.hpp:41
Definition: ddtLogger.hpp:51
Definition: ddtSubscriberSimulator.hpp:81
~DdtSubscriberSimulator() final
Definition: ddtSubscriberSimulator.cpp:53
bool Init(int argc, char **argv)
Definition: ddtSubscriberSimulator.cpp:67
int RunTransfer()
Definition: ddtSubscriberSimulator.cpp:120
int Run() final
Definition: ddtSubscriberSimulator.cpp:108
Builder for the command line parser.
Simulator for receiving data. This is a base class for data subscriber applications.
Data Subscriber. This class provides the functionality for subscriber applications to register / unre...
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...
Image Buffer class, handles internal CPL image. This file is part of the DDT Image Handling Library a...
Image IO function declaration. This file is part of the DDT Image Handling Library and provides funct...
Image IO function declaration. This file is part of the DDT Image Handling Library and provides initi...
Definition: ddtClient.hpp:39
SubscriberModes
Definition: ddtSubscriberSimulator.hpp:55
@ 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
Definition: ddtMemoryAccessor.hpp:184
Definition: ddtSubscriberSimulator.hpp:66
unsigned char c[4]
Definition: ddtSubscriberSimulator.hpp:75
float i
Definition: ddtSubscriberSimulator.hpp:70