From f1234f1f7f0d5ce93d806beb02b7758a8b1c9855 Mon Sep 17 00:00:00 2001 From: Wouter Hulsbergen <wouter.hulsbergen@nikhef.nl> Date: Mon, 22 Jan 2024 15:35:34 +0100 Subject: [PATCH] forward debug output for SOA container packing --- Event/EventPacker/include/Event/PackedDataBuffer.h | 12 ++++++------ .../src/component/BufferSOAPackerBaseAlg.h | 8 +++++--- .../src/component/BufferSOAUnpackerBaseAlg.h | 3 ++- .../src/component/BufferUnpackerBaseAlg.h | 2 +- Event/EventPacker/src/component/SelectivePacker.cpp | 3 ++- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Event/EventPacker/include/Event/PackedDataBuffer.h b/Event/EventPacker/include/Event/PackedDataBuffer.h index 69a73f681b6..d3dfd02949c 100644 --- a/Event/EventPacker/include/Event/PackedDataBuffer.h +++ b/Event/EventPacker/include/Event/PackedDataBuffer.h @@ -374,10 +374,10 @@ namespace LHCb::Hlt::PackedData { for ( const auto& object : v ) PackedData::save( soabuf, object ); } /// Save a soa object - template <typename T> + template <bool debug, typename T> auto save( const T& object ) -> decltype( object.pack( this->m_buffer ), std::pair<std::size_t, std::size_t>() ) { auto index0 = m_buffer.pos(); - object.template pack<true>( this->m_buffer ); + object.template pack<debug>( this->m_buffer ); return {index0, m_buffer.pos() - index0}; } }; @@ -508,18 +508,18 @@ namespace LHCb::Hlt::PackedData { } /// Save a soa object - template <typename T> + template <bool debug, typename T> auto save( const T& object ) -> decltype( object.pack( this->m_buffer ), std::pair<std::size_t, std::size_t>() ) { auto index0 = m_buffer.pos(); - object.template pack<true>( m_buffer ); + object.template pack<debug>( m_buffer ); return {index0, m_buffer.pos() - index0}; } /// Load a soa object. - template <typename T> + template <bool debug, typename T> auto load( T& object ) -> decltype( object.unpack( this->m_buffer ), std::size_t() ) { auto index0 = m_buffer.pos(); - object.template unpack<true>( m_buffer ); + object.template unpack<debug>( m_buffer ); return m_buffer.pos() - index0; } }; diff --git a/Event/EventPacker/src/component/BufferSOAPackerBaseAlg.h b/Event/EventPacker/src/component/BufferSOAPackerBaseAlg.h index f012a57afb6..4946eec588a 100644 --- a/Event/EventPacker/src/component/BufferSOAPackerBaseAlg.h +++ b/Event/EventPacker/src/component/BufferSOAPackerBaseAlg.h @@ -72,8 +72,9 @@ namespace DataPacking::Buffer::SOA { unsigned int nlinks = 0; buffer.saveSize( nlinks ); - auto oSize1 = buffer.saveSize( 0 ); // get position from this one - auto oSize2 = buffer.save( *data ); // get size from this one + auto oSize1 = buffer.saveSize( 0 ); // get position from this one + auto oSize2 = this->msgLevel( MSG::DEBUG ) ? buffer.save<true>( *data ) + : buffer.save<false>( *data ); // get size from this one buffer.saveAt<uint32_t>( oSize2.second, oSize1.first ); // save the correct size of the object if ( m_enableCheck ) { @@ -84,7 +85,8 @@ namespace DataPacking::Buffer::SOA { while ( !test_buffer.eof() ) { LHCb::Hlt::PackedData::ObjectHeader header{test_buffer}; - std::size_t nbytes = test_buffer.load( unpacked ); + std::size_t nbytes = this->msgLevel( MSG::DEBUG ) ? test_buffer.load<true>( unpacked ) + : test_buffer.load<false>( unpacked ); if ( nbytes != header.storedSize ) this->error() << "Unpacking check failed " diff --git a/Event/EventPacker/src/component/BufferSOAUnpackerBaseAlg.h b/Event/EventPacker/src/component/BufferSOAUnpackerBaseAlg.h index 65810d3b4a1..7fe8ca9ba29 100644 --- a/Event/EventPacker/src/component/BufferSOAUnpackerBaseAlg.h +++ b/Event/EventPacker/src/component/BufferSOAUnpackerBaseAlg.h @@ -57,7 +57,8 @@ namespace DataPacking::Buffer::SOA { while ( !readBuffer.eof() ) { LHCb::Hlt::PackedData::ObjectHeader header{readBuffer}; - auto nBytesRead = readBuffer.load( data ); + auto const nBytesRead = + this->msgLevel( MSG::DEBUG ) ? readBuffer.load<true>( data ) : readBuffer.load<false>( data ); if ( nBytesRead != header.storedSize ) { this->fatal() << "Loading of object (CLID=" << header.classID << " locationID=" << header.locationID << ") " diff --git a/Event/EventPacker/src/component/BufferUnpackerBaseAlg.h b/Event/EventPacker/src/component/BufferUnpackerBaseAlg.h index 29e38af5379..619a617d06d 100644 --- a/Event/EventPacker/src/component/BufferUnpackerBaseAlg.h +++ b/Event/EventPacker/src/component/BufferUnpackerBaseAlg.h @@ -283,7 +283,7 @@ namespace LHCb::Hlt::PackedData { auto data = std::make_unique<DataVector>(); using PackedDataVector = LHCb::Packers::Traits::packed_representation<DataVector>; if constexpr ( std::is_same<DataVector, PackedDataVector>::value ) { - nBytesRead = buffer.load( *data ); + nBytesRead = loader.msgLevel( MSG::DEBUG ) ? buffer.load<true>( *data ) : buffer.load<false>( *data ); if ( nBytesRead != header.storedSize ) return Unexpected{ErrorCode::INCONSISTENT_SIZE}; if ( !buffer.eof() ) { loader.warning() << " buffer not eof??? while restoring " diff --git a/Event/EventPacker/src/component/SelectivePacker.cpp b/Event/EventPacker/src/component/SelectivePacker.cpp index cb4c9d89778..1c8d43f0b51 100644 --- a/Event/EventPacker/src/component/SelectivePacker.cpp +++ b/Event/EventPacker/src/component/SelectivePacker.cpp @@ -532,7 +532,8 @@ namespace LHCb { auto posObjectSize = buffer.saveSize( 0 ).first; // Save the object actual object and see how many bytes were written - auto objectSize = buffer.save( data ).second; + auto objectSize = + parent().msgLevel( MSG::DEBUG ) ? buffer.save<true>( data ).second : buffer.save<false>( data ).second; // Save the object's size in the correct position buffer.saveAt<uint32_t>( objectSize, posObjectSize ); -- GitLab