10#ifndef NGC_GATEWAY_DDT_PUB_H_
11#define NGC_GATEWAY_DDT_PUB_H_
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>
43 explicit Publisher(std::mutex &m, ::ddt::DdtLogger *logger =
nullptr);
51 explicit Publisher(std::mutex &m,
int n, ::ddt::DdtLogger *logger =
nullptr);
70 virtual int Configure(
const char *name,
int nx,
int ny)
override;
79 virtual int IdxOut()
override;
85 virtual int IdxIn()
override;
92 virtual int Locked(
int idx)
override;
99 virtual int Lock(
int idx)
override;
106 virtual int TryLock(
int idx)
override;
113 virtual int Unlock(
int idx)
override;
120 virtual int Wait(
int idx)
override;
127 virtual int Publish(
int idx)
override;
156 std::mutex &m_gw_mutex;
159 ::ddt::DdtLogger *m_logger;
162 std::unique_ptr<::ddt::DdtDataPublisher> m_publisher;
165 DdtEncDecImage2D m_encoder;
179 template <
typename T>
181 if constexpr (
requires { obj.arcsec_pixel_x; }) {
184 if constexpr (
requires { obj.arcsec_pixel_y; }) {
187 if constexpr (
requires { obj.rotation_x_axis; }) {
190 if constexpr (
requires { obj.epoch_equinox; }) {
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;
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
NGC/NGCII data gateway WCS accessor.