// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JUNGFRAUJOCH_HDF5WRITER_H #define JUNGFRAUJOCH_HDF5WRITER_H #include #include "HDF5DataFile.h" #include "../common/JFJochMessages.h" #include "../common/ZMQWrappers.h" #include "HDF5NXmx.h" #include "CBFWriter.h" class FileWriter { FileWriterFormat format = FileWriterFormat::NXmxLegacy; StartMessage start_message; std::unique_ptr master_file; std::vector > files; std::vector stats; std::unique_ptr finalized_file_socket; std::unique_ptr cbf_writer; void CreateHDF5MasterFile(const StartMessage& msg); void AddStats(const std::optional& s); public: explicit FileWriter(const StartMessage &request); void Write(const DataMessage& msg); void WriteTIFF(const DataMessage& msg); void WriteHDF5(const DataMessage& msg); void WriteHDF5(const CompressedImage& msg); void WriteHDF5(const EndMessage& msg); std::vector Finalize(); void SetupFinalizedFileSocket(const std::string &addr); std::optional GetZMQAddr(); }; #endif //JUNGFRAUJOCH_HDF5WRITER_H