52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
// Copyright (2019-2023) Paul Scherrer Institute
|
|
|
|
#ifndef JUNGFRAUJOCH_JFJOCHRECEIVERSERVICE_H
|
|
#define JUNGFRAUJOCH_JFJOCHRECEIVERSERVICE_H
|
|
|
|
#include <mutex>
|
|
#include "JFJochReceiver.h"
|
|
|
|
#include "../common/NUMAHWPolicy.h"
|
|
|
|
class JFJochReceiverService {
|
|
NUMAHWPolicy numa_policy;
|
|
std::unique_ptr<JFJochReceiver> receiver;
|
|
AcquisitionDeviceGroup &aq_devices;
|
|
Logger &logger;
|
|
|
|
ImagePusher &image_pusher;
|
|
ZMQPreviewPublisher *preview_publisher = nullptr;
|
|
int64_t nthreads = 8;
|
|
|
|
int64_t send_buffer_count = 32;
|
|
|
|
enum class ReceiverState {Idle, Running};
|
|
ReceiverState state = ReceiverState::Idle;
|
|
std::mutex state_mutex;
|
|
std::condition_variable measurement_done;
|
|
std::future<void> measurement;
|
|
void FinalizeMeasurement();
|
|
DataProcessingSettings data_processing_settings;
|
|
public:
|
|
JFJochReceiverService(AcquisitionDeviceGroup &aq_devices,
|
|
Logger &logger, ImagePusher &pusher);
|
|
JFJochReceiverService& PreviewPublisher(ZMQPreviewPublisher *in_preview_writer);
|
|
JFJochReceiverService& NumThreads(int64_t input);
|
|
JFJochReceiverService& SendBufferCount(int64_t input);
|
|
JFJochReceiverService& NUMAPolicy(const NUMAHWPolicy& policy);
|
|
JFJochReceiverService& NUMAPolicy(const std::string& policy);
|
|
|
|
void Start(const DiffractionExperiment &experiment, const JFCalibration *calibration);
|
|
void Abort();
|
|
void Cancel();
|
|
JFJochReceiverOutput Stop();
|
|
void SetDataProcessingSettings(const DataProcessingSettings& settings);
|
|
Plot GetDataProcessingPlot(const PlotRequest& request);
|
|
RadialIntegrationProfiles GetRadialIntegrationProfiles();
|
|
JFJochReceiverStatus GetStatus();
|
|
std::vector<AcquisitionDeviceNetConfig> GetNetworkConfig();
|
|
};
|
|
|
|
|
|
#endif //JUNGFRAUJOCH_JFJOCHRECEIVERSERVICE_H
|