mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-05-02 05:02:24 +02:00
Prepare interfaces for JSON decoding
This commit is contained in:
@@ -38,11 +38,11 @@ public:
|
||||
~JFH5Writer();
|
||||
|
||||
void open_run(const std::string& output_file,
|
||||
const int64_t run_id,
|
||||
const uint32_t n_images,
|
||||
const uint32_t image_y_size,
|
||||
const uint32_t image_x_size,
|
||||
const uint32_t bits_per_pixel);
|
||||
const int run_id,
|
||||
const int n_images,
|
||||
const int image_y_size,
|
||||
const int image_x_size,
|
||||
const int bits_per_pixel);
|
||||
void close_run();
|
||||
|
||||
void write_data(const int64_t run_id,
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
|
||||
void write_meta(const int64_t run_id,
|
||||
const uint32_t index,
|
||||
const ImageMetadata& meta);
|
||||
const ImageMetadata* meta);
|
||||
};
|
||||
|
||||
#endif //JF_LIVE_WRITER_HPP
|
||||
|
||||
@@ -42,11 +42,11 @@ hid_t JFH5Writer::get_datatype(const int bits_per_pixel)
|
||||
}
|
||||
|
||||
void JFH5Writer::open_run(const string& output_file,
|
||||
const int64_t run_id,
|
||||
const uint32_t n_images,
|
||||
const uint32_t image_y_size,
|
||||
const uint32_t image_x_size,
|
||||
const uint32_t bits_per_pixel)
|
||||
const int run_id,
|
||||
const int n_images,
|
||||
const int image_y_size,
|
||||
const int image_x_size,
|
||||
const int dtype)
|
||||
{
|
||||
close_run();
|
||||
|
||||
@@ -233,7 +233,7 @@ void JFH5Writer::write_data(
|
||||
}
|
||||
|
||||
void JFH5Writer::write_meta(
|
||||
const int64_t run_id, const uint32_t index, const ImageMetadata& meta)
|
||||
const int64_t run_id, const uint32_t index, const ImageMetadata* meta)
|
||||
{
|
||||
if (run_id != current_run_id_) {
|
||||
throw runtime_error("Invalid run_id.");
|
||||
@@ -260,12 +260,12 @@ void JFH5Writer::write_meta(
|
||||
}
|
||||
|
||||
if (H5Dwrite(image_id_dataset_, H5T_NATIVE_UINT64,
|
||||
ram_ds, file_ds, H5P_DEFAULT, &(meta.id)) < 0) {
|
||||
ram_ds, file_ds, H5P_DEFAULT, &(meta->id)) < 0) {
|
||||
throw runtime_error("Cannot write data to pulse_id dataset.");
|
||||
}
|
||||
|
||||
if (H5Dwrite(status_dataset_, H5T_NATIVE_UINT64,
|
||||
ram_ds, file_ds, H5P_DEFAULT, &(meta.status)) < 0) {
|
||||
ram_ds, file_ds, H5P_DEFAULT, &(meta->status)) < 0) {
|
||||
throw runtime_error("Cannot write data to is_good_image dataset.");
|
||||
}
|
||||
|
||||
|
||||
@@ -54,11 +54,15 @@ int main (int argc, char *argv[])
|
||||
|
||||
// i_image == 0 -> we have a new run.
|
||||
if (meta.i_image == 0) {
|
||||
writer.open_run(meta.run_id,
|
||||
auto image_meta = (ImageMetadata*)
|
||||
image_buffer.get_slot_meta(meta.image_id);
|
||||
|
||||
writer.open_run(meta.output_file,
|
||||
meta.run_id,
|
||||
meta.n_images,
|
||||
meta.image_y_size,
|
||||
meta.image_x_size,
|
||||
meta.bits_per_pixel);
|
||||
image_meta->height,
|
||||
image_meta->width,
|
||||
image_meta->dtype);
|
||||
|
||||
stats.start_run(meta);
|
||||
}
|
||||
@@ -73,7 +77,7 @@ int main (int argc, char *argv[])
|
||||
|
||||
// Fair distribution of images among writers.
|
||||
if (meta.i_image % n_writers == i_writer) {
|
||||
char* data = image_buffer.get_slot_data(meta.image_metadata.id);
|
||||
char* data = image_buffer.get_slot_data(meta.image_id);
|
||||
|
||||
stats.start_image_write();
|
||||
writer.write_data(meta.run_id, meta.i_image, data);
|
||||
@@ -82,7 +86,9 @@ int main (int argc, char *argv[])
|
||||
|
||||
// Only the first instance writes metadata.
|
||||
if (i_writer == 0) {
|
||||
writer.write_meta(meta.run_id, meta.i_image, meta.image_metadata);
|
||||
auto image_meta = (ImageMetadata*)
|
||||
image_buffer.get_slot_meta(meta.image_id);
|
||||
writer.write_meta(meta.run_id, meta.i_image, image_meta);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user