From 5bf1d7f8f801491f7160d42ca2ceebb05abbeb25 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 17 Jun 2022 07:49:56 +0000 Subject: [PATCH] - delete copy constructor - added free() method - raise Exeption on write overflow git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1010 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- radio/processor/src/Buffer.hpp | 2 ++ radio/processor/src/Buffer.tcc | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/radio/processor/src/Buffer.hpp b/radio/processor/src/Buffer.hpp index 0b1c17f..4378f4e 100644 --- a/radio/processor/src/Buffer.hpp +++ b/radio/processor/src/Buffer.hpp @@ -49,10 +49,12 @@ class Buffer : public IBuffer }; Buffer(size_t capacity); ~Buffer(); + Buffer(const Buffer &rhs) = delete; void resize(size_t size); void fill(T value); size_t len(); + size_t free(); size_t capacity(); void clear(); diff --git a/radio/processor/src/Buffer.tcc b/radio/processor/src/Buffer.tcc index d1b18e8..9e991a8 100644 --- a/radio/processor/src/Buffer.tcc +++ b/radio/processor/src/Buffer.tcc @@ -61,6 +61,12 @@ size_t Buffer::len() return m_len; } +template +size_t Buffer::free() +{ + return m_capacity-m_len; +} + template size_t Buffer::capacity() { @@ -90,8 +96,14 @@ T* Buffer::data_r() template size_t Buffer::write(const T *pData, size_t len) { - len = std::min(m_capacity - m_len, len); + len = std::min(free(), len); size_t numWritten = 0; + + if (len == 0) + { + throw Buffer::Exception(Result::Err_InvalidSize); + } + while(len) { size_t num_remain = m_capacity - m_wi;