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;