// Copyright (2019-2023) Paul Scherrer Institute #ifndef JUNGFRAUJOCH_TESTIMAGEPUSHER_H #define JUNGFRAUJOCH_TESTIMAGEPUSHER_H #include #include "ImagePusher.h" #include "Logger.h" #include "DiffractionExperiment.h" #include "../jungfrau/JFCalibration.h" #include "../jungfrau/JFModuleGainCalibration.h" class TestImagePusher : public ImagePusher { mutable std::mutex m; std::vector receiver_generated_image; int64_t image_id; bool correct_sequence = true; bool is_running = false; size_t frame_counter = 0; public: void SendImage(const uint8_t *image_data, size_t image_size, int64_t image_number) override; void SendImage(const uint8_t *image_data, size_t image_size, int64_t image_number, ZeroCopyReturnValue *z) override; explicit TestImagePusher(int64_t image_number); void StartDataCollection(const StartMessage& message) override; void EndDataCollection(const EndMessage& message) override; bool CheckImage(const DiffractionExperiment &x, const std::vector &raw_reference_image, const JFCalibration &calibration, Logger &logger); [[nodiscard]] bool CheckSequence() const; [[nodiscard]] const std::vector &GetImage() const; [[nodiscard]] size_t GetCounter() const; }; #endif //JUNGFRAUJOCH_TESTIMAGEPUSHER_H