// Copyright (2019-2024) Paul Scherrer Institute #include "HDF5ImagePusher.h" #include "MakeDirectory.h" #include "HDF5NXmx.h" void HDF5ImagePusher::StartDataCollection(const StartMessage &message) { std::unique_lock ul(m); start_message = message; for (auto &i: start_message.pixel_mask) i.Save(); for (auto &i: start_message.calibration) i.Save(); CheckPath(start_message.file_prefix); MakeDirectory(start_message.file_prefix); writer = std::make_unique(start_message); } bool HDF5ImagePusher::EndDataCollection(const EndMessage &message) { std::unique_lock ul(m); if (!writer) return false; else { writer.reset(); try { if (!message.write_master_file || message.write_master_file.value()) HDF5Metadata::NXmx(start_message, message); } catch (...) { return false; } return true; } } bool HDF5ImagePusher::SendImage(const DataMessage &message) { std::unique_lock ul(m); if (writer) { try { writer->Write(message); } catch (...) { return false; } return true; } else return false; }