1 // 2 // Copyright © 2019 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "PacketBuffer.hpp" 7 8 #include <common/include/ProfilingException.hpp> 9 10 namespace arm 11 { 12 13 namespace pipe 14 { 15 PacketBuffer(unsigned int maxSize)16PacketBuffer::PacketBuffer(unsigned int maxSize) 17 : m_MaxSize(maxSize) 18 , m_Size(0) 19 { 20 m_Data = std::make_unique<unsigned char[]>(m_MaxSize); 21 } 22 GetReadableData() const23const unsigned char* PacketBuffer::GetReadableData() const 24 { 25 return m_Data.get(); 26 } 27 GetSize() const28unsigned int PacketBuffer::GetSize() const 29 { 30 return m_Size; 31 } 32 MarkRead()33void PacketBuffer::MarkRead() 34 { 35 m_Size = 0; 36 } 37 Commit(unsigned int size)38void PacketBuffer::Commit(unsigned int size) 39 { 40 if (size > m_MaxSize) 41 { 42 throw arm::pipe::ProfilingException("Cannot commit [" + std::to_string(size) + 43 "] bytes which is more than the maximum size of the buffer [" + std::to_string(m_MaxSize) + "]"); 44 } 45 m_Size = size; 46 } 47 Release()48void PacketBuffer::Release() 49 { 50 m_Size = 0; 51 } 52 GetWritableData()53unsigned char* PacketBuffer::GetWritableData() 54 { 55 return m_Data.get(); 56 } 57 Destroy()58void PacketBuffer::Destroy() 59 { 60 m_Data.reset(nullptr); 61 m_Size = 0; 62 m_MaxSize = 0; 63 } 64 65 } // namespace pipe 66 67 } // namespace arm 68