32 lines
938 B
C++
32 lines
938 B
C++
// Copyright (2019-2023) Paul Scherrer Institute
|
|
|
|
#include "ZMQPreviewPublisher.h"
|
|
#include "grpcToJson.h"
|
|
|
|
ZMQPreviewPublisher::ZMQPreviewPublisher(ZMQContext& context, const std::string& addr) :
|
|
socket(context, ZMQSocketType::Pub) {
|
|
socket.SendWaterMark(2).NoLinger();
|
|
socket.Bind(addr);
|
|
}
|
|
|
|
void ZMQPreviewPublisher::StartDataCollection(const uint8_t *image_data, size_t image_size, int64_t preview_stride) {
|
|
{
|
|
std::unique_lock<std::mutex> ul(m);
|
|
stride = preview_stride;
|
|
current_part = -1;
|
|
}
|
|
socket.Send(image_data, image_size);
|
|
}
|
|
|
|
void ZMQPreviewPublisher::SendImage(const uint8_t *image_data, size_t image_size, int64_t image_number) {
|
|
{
|
|
std::unique_lock<std::mutex> ul(m);
|
|
int64_t part = image_number / stride;
|
|
if (current_part >= part)
|
|
return;
|
|
else
|
|
current_part = part;
|
|
}
|
|
socket.Send(image_data, image_size);
|
|
}
|