diff --git a/core-buffer/include/LiveH5Reader.hpp b/core-buffer/include/LiveH5Reader.hpp index 9dda91e..809fbde 100644 --- a/core-buffer/include/LiveH5Reader.hpp +++ b/core-buffer/include/LiveH5Reader.hpp @@ -2,12 +2,23 @@ #define SF_DAQ_BUFFER_LIVEH5READER_HPP #include +#include #include "jungfrau.hpp" +#include "buffer_config.hpp" class LiveH5Reader { + struct LiveBufferMetadata { + uint64_t pulse_id[core_buffer::FILE_MOD]; + uint64_t frame_index[core_buffer::FILE_MOD]; + uint32_t daq_rec[core_buffer::FILE_MOD]; + uint16_t n_received_packets[core_buffer::FILE_MOD]; + }; + const std::string current_filename_; const uint16_t source_id_; + std::unique_ptr metadata_buffer_; + std::unique_ptr data_buffer_; public: LiveH5Reader( @@ -16,8 +27,10 @@ public: const uint16_t source_id); uint64_t get_latest_pulse_id(); - ModuleFrame* read_frame_metadata(uint64_t pulse_id); - char* read_frame_data(uint64_t pulse_id); + void load_pulse_id(uint64_t pulse_id); + + ModuleFrame* get_metadata(); + char* get_data(); }; diff --git a/sf-buffer/src/sf_live.cpp b/sf-buffer/src/sf_live.cpp index be0be1a..2f69bff 100644 --- a/sf-buffer/src/sf_live.cpp +++ b/sf-buffer/src/sf_live.cpp @@ -20,14 +20,16 @@ void sf_live ( auto current_pulse_id = reader.get_latest_pulse_id(); while (true) { - auto metadata = reader.read_frame_metadata(current_pulse_id); + reader.load_pulse_id(current_pulse_id); + + auto metadata = reader.get_metadata(); zmq_send(socket, (char*) metadata, sizeof(ModuleFrame), ZMQ_SNDMORE); - auto data = reader.read_frame_data(current_pulse_id); + auto data = reader.get_data(); zmq_send(socket, data,