Files
Jungfraujoch/frame_serialize/ZMQStream2PreviewPublisher.cpp

34 lines
1.1 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#include "ZMQStream2PreviewPublisher.h"
#include "CBORStream2Serializer.h"
ZMQStream2PreviewPublisher::ZMQStream2PreviewPublisher(ZMQContext& context, const std::string& addr) :
socket(context, ZMQSocketType::Pub) {
socket.Conflate(true).NoLinger();
socket.Bind(addr);
}
void ZMQStream2PreviewPublisher::StartDataCollection(const StartMessage& message) {
// Start message is not transmitted here
}
bool ZMQStream2PreviewPublisher::SendImage(const DataMessage& message) {
size_t approx_size = message.image.size + 2*1024*1024;
std::vector<uint8_t> serialization_buffer(approx_size);
CBORStream2Serializer serializer(serialization_buffer.data(), serialization_buffer.size());
serializer.SerializeImage(message);
return socket.Send(serialization_buffer.data(), serializer.GetBufferSize(), false);
}
bool ZMQStream2PreviewPublisher::EndDataCollection(const EndMessage &message) {
return true; // End message is not transmitted here
}
std::string ZMQStream2PreviewPublisher::GetAddress() {
return socket.GetEndpointName();
}