ngc 1.6.0
 
Loading...
Searching...
No Matches
pub.hpp
Go to the documentation of this file.
1
10#ifndef NGC_GATEWAY_DDT_PUB_H_
11#define NGC_GATEWAY_DDT_PUB_H_
12
13#include <string>
14#include <mutex>
15#include <concepts>
16
17#define BOOST_BIND_GLOBAL_PLACEHOLDERS
18#include <ddt/ddtDataPublisherApplication.hpp>
19#include <ddt/ddtDataPublisher.hpp>
20#include <ddt/ddtDataTransferFactory.hpp>
21#include <ddt/ddtEncDecImage2D.hpp>
22#include <ddt/ddtEncDecImage3D.hpp>
23#include <ddt/ddtLogger.hpp>
24
25#include <ngc/core/ngcdtt.hpp>
27
28namespace ngc::gateway::ddt {
29
36 class Publisher: public ngcdttPUBLISH {
37 public:
43 explicit Publisher(std::mutex &m, ::ddt::DdtLogger *logger = nullptr);
44
51 explicit Publisher(std::mutex &m, int n, ::ddt::DdtLogger *logger = nullptr);
52
54 virtual ~Publisher();
55
57
58 Publisher(Publisher&) = delete;
59 Publisher(Publisher&&) = delete;
62
70 virtual int Configure(const char *name, int nx, int ny) override;
71
73 virtual void Shutdown() override;
74
79 virtual int IdxOut() override;
80
85 virtual int IdxIn() override;
86
92 virtual int Locked(int idx) override;
93
99 virtual int Lock(int idx) override;
100
106 virtual int TryLock(int idx) override;
107
113 virtual int Unlock(int idx) override;
114
120 virtual int Wait(int idx) override;
121
127 virtual int Publish(int idx) override;
128
134 virtual void Invalidate(int idx) override;
135
136 private:
138 int m_registered;
139
141 int m_num_buf;
142
144 int m_idx_in;
145
147 int m_idx_out;
148
150 uint32_t m_image_id;
151
153 int m_endian;
154
156 std::mutex &m_gw_mutex;
157
159 ::ddt::DdtLogger *m_logger;
160
162 std::unique_ptr<::ddt::DdtDataPublisher> m_publisher;
163
165 DdtEncDecImage2D m_encoder;
166 //DdtEncDecImage3D encoder_;
167
169 void Init();
170
172 void Free();
173
179 template <typename T>
180 void SetWcs(T& obj, ngc::gateway::base::WcsInformation wcs) {
181 if constexpr (requires { obj.arcsec_pixel_x; }) {
182 obj.arcsec_pixel_x = wcs.arcsec_pixel_x;
183 }
184 if constexpr (requires { obj.arcsec_pixel_y; }) {
185 obj.arcsec_pixel_y = wcs.arcsec_pixel_y;
186 }
187 if constexpr (requires { obj.rotation_x_axis; }) {
188 obj.rotation_x_axis = wcs.rotation_x_axis;
189 }
190 if constexpr (requires { obj.epoch_equinox; }) {
191 obj.epoch_equinox = wcs.epoch_equinox;
192 }
193 obj.reference_point_x = wcs.reference_point_x;
194 obj.reference_point_y = wcs.reference_point_y;
195 obj.ra_reference_point = wcs.ra_reference_point;
196 obj.dec_reference_point = wcs.dec_reference_point;
197 obj.cd1_1 = wcs.cd1_1;
198 obj.cd1_2 = wcs.cd1_2;
199 obj.cd2_1 = wcs.cd2_1;
200 obj.cd2_2 = wcs.cd2_2;
201 obj.type_1 = wcs.type_1;
202 obj.type_2 = wcs.type_2;
203 }
204 };
205}
206
207#endif /* NGC_GATEWAY_DTT_PUB_H_ */
208
virtual int IdxIn() override
Definition pub.cpp:300
virtual ~Publisher()
Destructor.
Definition pub.cpp:25
virtual void Shutdown() override
Shutdown callback.
Definition pub.cpp:149
virtual int Locked(int idx) override
Definition pub.cpp:302
Publisher(Publisher &&)=delete
virtual int Wait(int idx) override
Definition pub.cpp:306
Publisher(Publisher &)=delete
Disables unused constructors and operators.
Publisher(std::mutex &m, ::ddt::DdtLogger *logger=nullptr)
Definition pub.cpp:15
Publisher & operator=(Publisher &)=delete
virtual int Configure(const char *name, int nx, int ny) override
Definition pub.cpp:59
virtual int IdxOut() override
Definition pub.cpp:301
int TryLock()
Try to lock current frame bbuffer.
Definition ngcdttPUBLISH.cpp:106
int Lock()
Lock current frame buffer.
Definition ngcdttPUBLISH.cpp:108
void Invalidate()
Invalidate current frame buffer.
Definition ngcdttPUBLISH.cpp:112
int Unlock()
Unlock current frame buffer.
Definition ngcdttPUBLISH.cpp:110
ngcdttPUBLISH()
Constructor.
Definition ngcdttPUBLISH.cpp:23
int Publish()
Publish current frame buffer.
Definition ngcdttPUBLISH.cpp:104
Definition app.cpp:13
float arcsec_pixel_y
Definition wcs.hpp:27
float ra_reference_point
Definition wcs.hpp:24
float cd2_1
Definition wcs.hpp:31
float rotation_x_axis
Definition wcs.hpp:28
float reference_point_x
Definition wcs.hpp:22
std::string type_1
Definition wcs.hpp:34
float arcsec_pixel_x
Definition wcs.hpp:26
float cd1_1
Definition wcs.hpp:29
float dec_reference_point
Definition wcs.hpp:25
float cd2_2
Definition wcs.hpp:32
float reference_point_y
Definition wcs.hpp:23
float epoch_equinox
Definition wcs.hpp:33
std::string type_2
Definition wcs.hpp:35
float cd1_2
Definition wcs.hpp:30
NGC/NGCII data gateway WCS accessor.