diff --git a/src/ProcessManager.cpp b/src/ProcessManager.cpp index d4455a0..3dbdfb9 100644 --- a/src/ProcessManager.cpp +++ b/src/ProcessManager.cpp @@ -105,9 +105,9 @@ void ProcessManager::receive_zmq(WriterManager& manager, RingBuffer& ring_buffer } // Parse JSON header. - string header_string(static_cast(message_header.data()), message_header.size()); + frame_metadata.header_string = string(static_cast(message_header.data()), message_header.size()); stringstream header_stream; - header_stream << header_string << endl; + header_stream << frame_metadata.header_string << endl; pt::read_json(header_stream, json_header); // Extract data from message header. diff --git a/src/RingBuffer.hpp b/src/RingBuffer.hpp index d750e6e..6ab7587 100644 --- a/src/RingBuffer.hpp +++ b/src/RingBuffer.hpp @@ -11,10 +11,10 @@ struct FrameMetadata { FrameMetadata(){} - + FrameMetadata(const FrameMetadata& other) : buffer_slot_index(other.buffer_slot_index), frame_bytes_size(other.frame_bytes_size), frame_index(other.frame_index), - endianness(other.endianness), type(other.type) { + endianness(other.endianness), type(other.type), header_string(other.header_string) { frame_shape[0] = other.frame_shape[0]; frame_shape[1] = other.frame_shape[1]; } @@ -28,6 +28,9 @@ struct FrameMetadata std::string endianness; std::string type; size_t frame_shape[2]; + + // Pass the original header as well. + std::string header_string; }; class RingBuffer