diff --git a/core-writer/src/RingBuffer.cpp b/core-writer/src/RingBuffer.cpp index 097f9f5..2c7ce67 100644 --- a/core-writer/src/RingBuffer.cpp +++ b/core-writer/src/RingBuffer.cpp @@ -203,6 +203,26 @@ pair, char*> RingBuffer::read() cout << " Received metadata for frame_index "; cout << frame_metadata->frame_index << endl; #endif + + // Check if the references ring buffer slot is valid. + { + lock_guard lock(ringbuffer_slots_mutex_); + + if (!ringbuffer_slots_[frame_metadata->buffer_slot_index]) { + stringstream err_msg; + + using namespace date; + using namespace chrono; + err_msg << "[" << system_clock::now() << "]"; + err_msg << "[RingBuffer::read]"; + err_msg << " Ring buffer slot"; + err_msg << " referenced in message header "; + err_msg << frame_metadata->buffer_slot_index << " is empty."; + err_msg << endl; + + throw runtime_error(err_msg.str()); + } + } return {frame_metadata, get_buffer_slot_address(frame_metadata->buffer_slot_index)};