From 424f035271bf445e26e1fdbaba616cc1836d0431 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 3 Dec 2018 11:56:06 +0100 Subject: [PATCH] Add BufferedWriter --- lib/src/BufferedWriter.cpp | 33 +++++++++++++++++++++++++++++++++ lib/src/BufferedWriter.hpp | 24 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 lib/src/BufferedWriter.cpp create mode 100644 lib/src/BufferedWriter.hpp diff --git a/lib/src/BufferedWriter.cpp b/lib/src/BufferedWriter.cpp new file mode 100644 index 0000000..8f80943 --- /dev/null +++ b/lib/src/BufferedWriter.cpp @@ -0,0 +1,33 @@ +#include "BufferedWriter.hpp" + +using namespace std; + +BufferedWriter::BufferedWriter(const std::string& filename, size_t total_frames, hsize_t frames_per_file, + hsize_t initial_dataset_size, hsize_t dataset_increase_step) : + H5Writer(filename, frames_per_file, initial_dataset_size, dataset_increase_step), + total_frames(total_frames) +{ + #ifdef DEBUG_OUTPUT + using namespace date; + cout << "[" << std::chrono::system_clock::now() << "]"; + cout << "[BufferedWriter::BufferedWriter] Creating buffered writer"; + cout << " with filename " << filename; + cout << " and total_frames " << total_frames; + cout << " and frames_per_file " << frames_per_file; + cout << " and initial_dataset_size " << initial_dataset_size; + cout << endl; + #endif +} + +DummyBufferedWriter::DummyBufferedWriter() : BufferedWriter("/dev/null", 0, 0, 0, 0){} + +std::unique_ptr get_buffered_writer(const string& filename, size_t total_frames, + hsize_t frames_per_file, hsize_t initial_dataset_size, hsize_t dataset_increase_step) +{ + if (filename == "/dev/null") { + return unique_ptr(new DummyBufferedWriter()); + } else { + return unique_ptr(new BufferedWriter(filename, total_frames, + frames_per_file, initial_dataset_size, dataset_increase_step)); + } +} \ No newline at end of file diff --git a/lib/src/BufferedWriter.hpp b/lib/src/BufferedWriter.hpp new file mode 100644 index 0000000..a921104 --- /dev/null +++ b/lib/src/BufferedWriter.hpp @@ -0,0 +1,24 @@ +#ifndef BUFFEREDWRITER_H +#define BUFFEREDWRITER_H + +#include "H5Writer.hpp" + +class BufferedWriter : public H5Writer +{ + size_t total_frames; + + public: + BufferedWriter(const std::string& filename, size_t total_frames, hsize_t frames_per_file=0, + hsize_t initial_dataset_size=1000, hsize_t dataset_increase_step=1000); +}; + +class DummyBufferedWriter : public BufferedWriter +{ + public: + DummyBufferedWriter(); +}; + +std::unique_ptr get_buffered_writer(const std::string& filename, size_t total_frames, + hsize_t frames_per_file=0, hsize_t initial_dataset_size=1000, hsize_t dataset_increase_step=1000); + +#endif \ No newline at end of file