From af9027fe66fffddb273d1bd1dfe5261a3fa4bd4d Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 6 May 2020 12:47:59 +0200 Subject: [PATCH] Changed recv function signature with complete pointer type --- core-buffer/include/LiveRecvModule.hpp | 2 +- core-buffer/src/LiveRecvModule.cpp | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core-buffer/include/LiveRecvModule.hpp b/core-buffer/include/LiveRecvModule.hpp index 8ca1a23..868f6e7 100644 --- a/core-buffer/include/LiveRecvModule.hpp +++ b/core-buffer/include/LiveRecvModule.hpp @@ -23,7 +23,7 @@ public: virtual ~LiveRecvModule(); void* connect_socket(size_t module_id); - void recv_single_module(void* socket, char* metadata, char* data); + void recv_single_module(void* socket, ModuleFrame* metadata, char* data); void receive_thread(const size_t n_modules, void* ctx); }; diff --git a/core-buffer/src/LiveRecvModule.cpp b/core-buffer/src/LiveRecvModule.cpp index 422982d..4a8e553 100644 --- a/core-buffer/src/LiveRecvModule.cpp +++ b/core-buffer/src/LiveRecvModule.cpp @@ -73,7 +73,7 @@ void* LiveRecvModule::connect_socket(size_t module_id) } void LiveRecvModule::recv_single_module( - void* socket, char* metadata, char* data) + void* socket, ModuleFrame* metadata, char* data) { auto n_bytes_metadata = zmq_recv( socket, @@ -85,6 +85,10 @@ void LiveRecvModule::recv_single_module( throw runtime_error("Stream header of wrong size."); } + if (metadata->pulse_id == 0) { + throw runtime_error("Received invalid pulse_id=0."); + } + auto n_bytes_image = zmq_recv( socket, data, @@ -117,12 +121,10 @@ void LiveRecvModule::receive_thread(const size_t n_modules, void* ctx_) recv_single_module( sockets[i_module], - (char*)(&(module_metadata)), + &module_metadata, data + (MODULE_N_BYTES * i_module)); - current_pulse_id = max( - current_pulse_id, - metadata->module[i_module].pulse_id); + current_pulse_id = max(current_pulse_id, module_metadata.pulse_id); } // Second pass - align all receivers to the max pulse_id. @@ -133,7 +135,7 @@ void LiveRecvModule::receive_thread(const size_t n_modules, void* ctx_) for (size_t i = 0; i < diff_to_max; i++) { recv_single_module( sockets[i_module], - (char *) (&(module_metadata)), + &module_metadata, data + (MODULE_N_BYTES * i_module)); } @@ -161,7 +163,7 @@ void LiveRecvModule::receive_thread(const size_t n_modules, void* ctx_) recv_single_module( sockets[i_module], - (char*)(&(module_metadata)), + &module_metadata, data + (MODULE_N_BYTES * i_module)); if (current_pulse_id != module_metadata.pulse_id) {