Files
Jungfraujoch/preview/ZMQPreviewSocket.cpp
2024-10-16 19:52:01 +02:00

38 lines
1009 B
C++

// Copyright (2019-2024) Paul Scherrer Institute
#include "ZMQPreviewSocket.h"
ZMQPreviewSocket::ZMQPreviewSocket(const std::string &addr)
: counter(std::chrono::seconds(1)), enable(true), socket(ZMQSocketType::Pub)
{
socket.Conflate(true);
socket.Bind(addr);
}
ZMQPreviewSocket &ZMQPreviewSocket::Period(const std::optional<std::chrono::microseconds> &period) {
counter.Period(period);
enable = period.has_value();
return *this;
}
void ZMQPreviewSocket::SendImage(const uint8_t *image_data, size_t image_size) {
if (counter.GeneratePreview())
socket.Send(image_data, image_size, false);
}
std::string ZMQPreviewSocket::GetAddress() {
return socket.GetEndpointName();
}
ZMQPreviewSettings ZMQPreviewSocket::GetSettings() {
return {
.period = counter.GetPeriod(),
.address = socket.GetEndpointName()
};
}
ZMQPreviewSocket &ZMQPreviewSocket::ImportSettings(const ZMQPreviewSettings &settings) {
Period(settings.period);
return *this;
}