34 lines
1.0 KiB
C++
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
|