Prepare interfaces for JSON decoding

This commit is contained in:
2021-07-06 16:21:42 +02:00
parent 2fbead8c2f
commit 9a5aaf4efd
3 changed files with 26 additions and 20 deletions
+6 -6
View File
@@ -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
+8 -8
View File
@@ -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.");
}
+12 -6
View File
@@ -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);
}
}