#ifndef BUFFEREDWRITER_H #define BUFFEREDWRITER_H #include "H5Writer.hpp" #include "MetadataBuffer.hpp" class BufferedWriter : public H5Writer { size_t total_frames; std::unique_ptr metadata_buffer; void write_metadata_to_file(); public: BufferedWriter(const std::string& filename, size_t total_frames, std::unique_ptr&& metadata_buffer, hsize_t frames_per_file=0, hsize_t initial_dataset_size=1000, hsize_t dataset_increase_step=1000); void write_metadata(std::string name, uint64_t frame_index, const char* data); virtual void close_file() override; }; class DummyBufferedWriter : public BufferedWriter { public: DummyBufferedWriter(); }; std::unique_ptr get_buffered_writer(const std::string& filename, size_t total_frames, std::unique_ptr metadata_buffer, hsize_t frames_per_file=0, hsize_t dataset_increase_step=1000); #endif