Files
Jungfraujoch/writer/HDF5ImagePusher.cpp
leonarski_f d315506633 * Enhancements for XFEL
* Enhancements for EIGER
* Writer is more flexible and capable of handling DECTRIS data
2024-03-05 20:41:47 +01:00

47 lines
1.2 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#include "HDF5ImagePusher.h"
#include "MakeDirectory.h"
#include "HDF5NXmx.h"
void HDF5ImagePusher::StartDataCollection(const StartMessage &message) {
std::unique_lock<std::mutex> 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<HDF5Writer>(start_message);
}
bool HDF5ImagePusher::EndDataCollection(const EndMessage &message) {
std::unique_lock<std::mutex> 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<std::mutex> ul(m);
if (writer) {
try {
writer->Write(message);
} catch (...) {
return false;
}
return true;
} else
return false;
}