From cdf263697412c2a194e4b8949103f087ef2cd903 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 20 Apr 2020 10:56:54 +0200 Subject: [PATCH] Change shared_ptr for unique_ptr --- core-buffer/include/FastH5Writer.hpp | 4 ++- core-buffer/src/FastH5Writer.cpp | 46 ++++++++++++++++------------ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/core-buffer/include/FastH5Writer.hpp b/core-buffer/include/FastH5Writer.hpp index 7f8e31b..559b051 100644 --- a/core-buffer/include/FastH5Writer.hpp +++ b/core-buffer/include/FastH5Writer.hpp @@ -26,7 +26,7 @@ class FastH5Writer { uint64_t current_pulse_id_; size_t current_frame_index_; - std::unordered_map> buffers_; + std::unordered_map> buffers_; std::unordered_map datasets_; std::unordered_map scalar_metadata_; @@ -44,6 +44,8 @@ public: const std::string& device_name, const std::string& root_folder); + virtual ~FastH5Writer(); + template void add_scalar_metadata( const std::string& metadata_name); diff --git a/core-buffer/src/FastH5Writer.cpp b/core-buffer/src/FastH5Writer.cpp index 1e95e66..effb658 100644 --- a/core-buffer/src/FastH5Writer.cpp +++ b/core-buffer/src/FastH5Writer.cpp @@ -69,10 +69,16 @@ void FastH5Writer::create_file(const string& filename) size_t n_buffer_bytes = dataset.getDataType().getSize() * n_frames_per_file_; - buffers_.insert({dataset_name, make_shared(n_buffer_bytes)}); + buffers_.insert( + {dataset_name, make_unique(n_buffer_bytes)}); } } +FastH5Writer::~FastH5Writer() +{ + close_file(); +} + void FastH5Writer::close_file() { flush_metadata(); @@ -129,28 +135,28 @@ void FastH5Writer::flush_metadata() void FastH5Writer::write_data(const char *buffer) { - hsize_t offset[3] = {current_frame_index_, 0, 0}; + hsize_t offset[3] = {current_frame_index_, 0, 0}; - if(H5DOwrite_chunk( - current_image_dataset_.getId(), - H5P_DEFAULT, - 0, // Filters - offset, // Offset - frame_bytes_size_, - buffer)) - { - stringstream err_msg; + if(H5DOwrite_chunk( + current_image_dataset_.getId(), + H5P_DEFAULT, + 0, // Filters + offset, // Offset + frame_bytes_size_, + buffer)) + { + stringstream err_msg; - using namespace date; - using namespace chrono; - err_msg << "[" << system_clock::now() << "]"; - err_msg << "[FastH5Writer::write_data]"; - // TODO: This error message is bad. Extract the real error from lib. - err_msg << " Error when writing to "; - err_msg << current_output_filename_; + using namespace date; + using namespace chrono; + err_msg << "[" << system_clock::now() << "]"; + err_msg << "[FastH5Writer::write_data]"; + // TODO: This error message is bad. Extract the real error from lib. + err_msg << " Error when writing to "; + err_msg << current_output_filename_; - throw runtime_error(err_msg.str()); - } + throw runtime_error(err_msg.str()); + } } void FastH5Writer::write_scalar_metadata(