From 5bca17e74d7e1eecba5bd3138e3acc250f10cbe6 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Thu, 5 Jul 2018 13:59:03 +0200 Subject: [PATCH] Adjust ProcessManager to new header data type --- src/ProcessManager.cpp | 35 +++++++++-------------------------- src/ProcessManager.hpp | 2 +- 2 files changed, 10 insertions(+), 27 deletions(-) diff --git a/src/ProcessManager.cpp b/src/ProcessManager.cpp index 7e94df1..d11eabb 100644 --- a/src/ProcessManager.cpp +++ b/src/ProcessManager.cpp @@ -87,25 +87,10 @@ void ProcessManager::receive_zmq(WriterManager& manager, RingBuffer& ring_buffer } void ProcessManager::write_h5(WriterManager& manager, const H5Format& format, RingBuffer& ring_buffer, - const shared_ptr> header_values_type) + const shared_ptr> header_values_type) { H5Writer writer(manager.get_output_file(), 0, config::initial_dataset_size, config::dataset_increase_step); auto raw_frames_dataset_name = config::raw_image_dataset_name; - - // Mapping for header values. - // TODO: This should be moved into future PROTOCOL FORMAT file. - std::unordered_map type_to_size_mapping { - {"uint8", 1}, - {"uint16", 2}, - {"uint32", 4}, - {"uint64", 8}, - {"int8", 1}, - {"int16", 2}, - {"int32", 4}, - {"int64", 8}, - {"float32", 4}, - {"float64", 8}, - }; // Run until the running flag is set or the ring_buffer is empty. while(manager.is_running() || !ring_buffer.is_empty()) { @@ -139,22 +124,20 @@ void ProcessManager::write_h5(WriterManager& manager, const H5Format& format, Ri for (const auto& header_type : *header_values_type) { auto& name = header_type.first; - auto& type = header_type.second; + auto& header_data_type = header_type.second; auto value = received_data.first->header_values.at(name); // Header data are fixed to scalars in little endian. - vector value_shape = {1}; - auto endianness = "little"; - auto value_bytes_size = type_to_size_mapping.at(type); + vector value_shape = {header_data_type.value_shape}; writer.write_data(name, - received_data.first->frame_index, - value.get(), - value_shape, - value_bytes_size, - type, - endianness); + received_data.first->frame_index, + value.get(), + value_shape, + header_data_type.value_bytes_size, + header_data_type.type, + header_data_type.endianness); } } diff --git a/src/ProcessManager.hpp b/src/ProcessManager.hpp index 20f1f59..b694051 100644 --- a/src/ProcessManager.hpp +++ b/src/ProcessManager.hpp @@ -13,7 +13,7 @@ namespace ProcessManager void receive_zmq(WriterManager& manager, RingBuffer& ring_buffer, ZmqReceiver& receiver, const H5Format& format); void write_h5(WriterManager& manager, const H5Format& format, RingBuffer& ring_buffer, - const std::shared_ptr> header_values_type); + const std::shared_ptr> header_values_type); }; #endif \ No newline at end of file