From 1a0a709bb0669ee02bff846778a5cf10aa7c0dff Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 22 Apr 2020 16:18:10 +0200 Subject: [PATCH] Make sf_replay simple again --- core-buffer/include/BufferUtils.hpp | 2 +- sf-buffer/src/sf_replay.cpp | 132 +++++++--------------------- 2 files changed, 34 insertions(+), 100 deletions(-) diff --git a/core-buffer/include/BufferUtils.hpp b/core-buffer/include/BufferUtils.hpp index 2401b9f..3d89c3a 100644 --- a/core-buffer/include/BufferUtils.hpp +++ b/core-buffer/include/BufferUtils.hpp @@ -6,7 +6,7 @@ namespace BufferUtils { - const size_t STREAM_BLOCK_SIZE = 200; + const size_t STREAM_BLOCK_SIZE = 1000; extern const size_t FILE_MOD; extern const size_t FOLDER_MOD; extern const std::string FILE_EXTENSION; diff --git a/sf-buffer/src/sf_replay.cpp b/sf-buffer/src/sf_replay.cpp index b33063d..a32d6d2 100644 --- a/sf-buffer/src/sf_replay.cpp +++ b/sf-buffer/src/sf_replay.cpp @@ -30,9 +30,6 @@ int main (int argc, char *argv[]) { uint64_t start_pulse_id = (uint64_t) atoll(argv[4]); uint64_t stop_pulse_id = (uint64_t) atoll(argv[5]); - // TODO: If stop_pulse_id not in LATEST_filename file path throw exception. - // string LATEST_filename = root_folder + "/" + device_name + "/LATEST"; - auto metadata_buffer = make_unique(); metadata_buffer->module_id = module_id; @@ -76,112 +73,49 @@ int main (int argc, char *argv[]) { H5::H5File input_file(filename, H5F_ACC_RDONLY); auto image_dataset = input_file.openDataSet("image"); + image_dataset.read( + image_buffer.get(), H5::PredType::NATIVE_UINT16); + auto pulse_id_dataset = input_file.openDataSet("pulse_id"); + pulse_id_dataset.read( + metadata_buffer->pulse_id, H5::PredType::NATIVE_UINT64); + auto frame_id_dataset = input_file.openDataSet("frame_id"); + frame_id_dataset.read( + metadata_buffer->frame_index, H5::PredType::NATIVE_UINT64); + auto daq_rec_dataset = input_file.openDataSet("daq_rec"); + daq_rec_dataset.read( + metadata_buffer->daq_rec, H5::PredType::NATIVE_UINT32); + auto received_packets_dataset = input_file.openDataSet("received_packets"); - - // Load first - - hsize_t file_dim[3] = {BufferUtils::FILE_MOD, 512, 1024}; - H5::DataSpace file_space (3, file_dim); - hsize_t b_count[] = {BufferUtils::STREAM_BLOCK_SIZE, 512, 1024}; - hsize_t b_start[] = {0, 0, 0}; - file_space.selectHyperslab(H5S_SELECT_SET, b_count, b_start); - - image_dataset.read( - image_buffer.get(), H5::PredType::NATIVE_UINT16, - H5::DataSpace::ALL, file_space); - - hsize_t meta_dim[2] = {BufferUtils::FILE_MOD, 1}; - H5::DataSpace meta_space (2, meta_dim); - hsize_t m_count[] = {BufferUtils::STREAM_BLOCK_SIZE, 1}; - hsize_t m_start[] = {0, 0, 0}; - meta_space.selectHyperslab(H5S_SELECT_SET, m_count, m_start); - - pulse_id_dataset.read( - metadata_buffer->pulse_id, H5::PredType::NATIVE_UINT64, - H5::DataSpace::ALL, meta_space); - - frame_id_dataset.read( - metadata_buffer->frame_index, H5::PredType::NATIVE_UINT64, - H5::DataSpace::ALL, meta_space); - - daq_rec_dataset.read( - metadata_buffer->daq_rec, H5::PredType::NATIVE_UINT32, - H5::DataSpace::ALL, meta_space); - received_packets_dataset.read( metadata_buffer->n_received_packets, - H5::PredType::NATIVE_UINT16, - H5::DataSpace::ALL, meta_space); - - for ( - size_t start_pulse=0; - start_pulsepulse_id[i_frame], - metadata_buffer->frame_index[i_frame], - metadata_buffer->daq_rec[i_frame], - metadata_buffer->n_received_packets[i_frame], - module_id - }; - - zmq_send(socket, - &module_frame, - sizeof(ModuleFrame), - ZMQ_SNDMORE); - - zmq_send(socket, - (char*) (image_buffer.get() + (i_frame * 512 * 1024)), - 512 * 1024 * 2, - 0); - } - - // Load next - if (start_pulse + BufferUtils::STREAM_BLOCK_SIZE < BufferUtils::FILE_MOD) { - - hsize_t file_dim[3] = {BufferUtils::FILE_MOD, 512, 1024}; - H5::DataSpace file_space (3, file_dim); - hsize_t b_count[] = {BufferUtils::STREAM_BLOCK_SIZE, 512, 1024}; - hsize_t b_start[] = {start_pulse, 0, 0}; - file_space.selectHyperslab(H5S_SELECT_SET, b_count, b_start); - - image_dataset.read( - image_buffer.get(), H5::PredType::NATIVE_UINT16, - H5::DataSpace::ALL, file_space); - - hsize_t meta_dim[2] = {BufferUtils::FILE_MOD, 1}; - H5::DataSpace meta_space (2, meta_dim); - hsize_t m_count[] = {BufferUtils::STREAM_BLOCK_SIZE, 1}; - hsize_t m_start[] = {start_pulse, 0, 0}; - meta_space.selectHyperslab(H5S_SELECT_SET, m_count, m_start); - - pulse_id_dataset.read( - metadata_buffer->pulse_id, H5::PredType::NATIVE_UINT64, - H5::DataSpace::ALL, meta_space); - - frame_id_dataset.read( - metadata_buffer->frame_index, H5::PredType::NATIVE_UINT64, - H5::DataSpace::ALL, meta_space); - - daq_rec_dataset.read( - metadata_buffer->daq_rec, H5::PredType::NATIVE_UINT32, - H5::DataSpace::ALL, meta_space); - - received_packets_dataset.read( - metadata_buffer->n_received_packets, - H5::PredType::NATIVE_UINT16, - H5::DataSpace::ALL, meta_space); - } - } + H5::PredType::NATIVE_UINT16); input_file.close(); + for (size_t i_frame=0; i_frame < BufferUtils::FILE_MOD; i_frame++) { + + ModuleFrame module_frame = { + metadata_buffer->pulse_id[i_frame], + metadata_buffer->frame_index[i_frame], + metadata_buffer->daq_rec[i_frame], + metadata_buffer->n_received_packets[i_frame], + module_id + }; + + zmq_send(socket, + &module_frame, + sizeof(ModuleFrame), + ZMQ_SNDMORE); + + zmq_send(socket, + (char*) (image_buffer.get() + (i_frame * 512 * 1024)), + 512 * 1024 * 2, + 0); + } } zmq_close(socket);