Add MetadataBuffer to BufferedWriter

This commit is contained in:
2018-12-03 17:19:01 +01:00
parent 06f7f8773e
commit e5c340126b
3 changed files with 16 additions and 10 deletions
+6 -5
View File
@@ -2,10 +2,10 @@
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) :
BufferedWriter::BufferedWriter(const std::string& filename, size_t total_frames, unique_ptr<MetadataBuffer>&& metadata_buffer,
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)
total_frames(total_frames), metadata_buffer(move(metadata_buffer))
{
#ifdef DEBUG_OUTPUT
using namespace date;
@@ -22,12 +22,13 @@ BufferedWriter::BufferedWriter(const std::string& filename, size_t total_frames,
DummyBufferedWriter::DummyBufferedWriter() : BufferedWriter("/dev/null", 0, 0, 0, 0){}
std::unique_ptr<BufferedWriter> 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)
std::unique_ptr<MetadataBuffer> metadata_buffer, hsize_t frames_per_file,
hsize_t initial_dataset_size, hsize_t dataset_increase_step)
{
if (filename == "/dev/null") {
return unique_ptr<BufferedWriter>(new DummyBufferedWriter());
} else {
return unique_ptr<BufferedWriter>(new BufferedWriter(filename, total_frames,
return unique_ptr<BufferedWriter>(new BufferedWriter(filename, total_frames, move(metadata_buffer),
frames_per_file, initial_dataset_size, dataset_increase_step));
}
}
+6 -3
View File
@@ -2,14 +2,16 @@
#define BUFFEREDWRITER_H
#include "H5Writer.hpp"
#include "MetadataBuffer.hpp"
class BufferedWriter : public H5Writer
{
size_t total_frames;
std::unique_ptr<MetadataBuffer> metadata_buffer;
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);
BufferedWriter(const std::string& filename, size_t total_frames, std::unique_ptr<MetadataBuffer>&& metadata_buffer,
hsize_t frames_per_file=0, hsize_t initial_dataset_size=1000, hsize_t dataset_increase_step=1000);
};
class DummyBufferedWriter : public BufferedWriter
@@ -19,6 +21,7 @@ class DummyBufferedWriter : public BufferedWriter
};
std::unique_ptr<BufferedWriter> 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);
std::unique_ptr<MetadataBuffer> metadata_buffer, hsize_t frames_per_file=0,
hsize_t initial_dataset_size=1000, hsize_t dataset_increase_step=1000);
#endif
+4 -2
View File
@@ -149,8 +149,10 @@ void ProcessManager::receive_zmq()
void ProcessManager::write_h5()
{
auto writer = get_buffered_writer(writer_manager.get_output_file(), writer_manager.get_n_frames(), frames_per_file,
config::initial_dataset_size, config::dataset_increase_step);
auto metadata_buffer = unique_ptr<MetadataBuffer>(new MetadataBuffer(writer_manager.get_n_frames(), receiver.get_header_values_type()));
auto writer = get_buffered_writer(writer_manager.get_output_file(), writer_manager.get_n_frames(), move(metadata_buffer),
frames_per_file, config::initial_dataset_size, config::dataset_increase_step);
writer->create_file();