Files
Jungfraujoch/common/ZMQPreviewPublisher.h

34 lines
1.0 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#ifndef JUNGFRAUJOCH_ZMQPREVIEWPUBLISHER_H
#define JUNGFRAUJOCH_ZMQPREVIEWPUBLISHER_H
#include <jfjoch.pb.h>
#include "ZMQWrappers.h"
#include "DiffractionExperiment.h"
#include "../jungfrau/JFCalibration.h"
#include "../frame_serialize/CBORMessages.h"
class ZMQPreviewPublisher {
ZMQSocket socket;
int64_t stride;
int64_t current_part;
mutable std::mutex m;
mutable std::mutex frame_mutex;
JFJochProtoBuf::PreviewFrame saved_frame;
void SetPreviewImage(const JFJochProtoBuf::PreviewFrame &frame);
public:
ZMQPreviewPublisher(ZMQContext& context, const std::string& addr);
void Start(const DiffractionExperiment& experiment, const JFCalibration &calibration);
void Publish(const DiffractionExperiment& experiment, const int16_t* image_data, const DataMessage &message);
void Stop(const DiffractionExperiment& experiment);
JFJochProtoBuf::PreviewFrame GetPreviewImage() const;
};
#endif //JUNGFRAUJOCH_ZMQPREVIEWPUBLISHER_H