diff options
author | Max Kellermann <max@duempel.org> | 2013-12-15 22:39:30 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-12-15 23:07:08 +0100 |
commit | 1f523be72decf652dfe64ac6885770d8e86de0c7 (patch) | |
tree | 530d9367773757f1f3b826a7afd1d4daa5ffd9b6 | |
parent | f2a20a0a800e879b0e52681b7f9b8829047c55a7 (diff) | |
download | mpd-1f523be72decf652dfe64ac6885770d8e86de0c7.tar.gz mpd-1f523be72decf652dfe64ac6885770d8e86de0c7.tar.xz mpd-1f523be72decf652dfe64ac6885770d8e86de0c7.zip |
util/PeakBuffer: return ConstBuffer<void>
Diffstat (limited to '')
-rw-r--r-- | src/event/FullyBufferedSocket.cxx | 7 | ||||
-rw-r--r-- | src/util/PeakBuffer.cxx | 14 | ||||
-rw-r--r-- | src/util/PeakBuffer.hxx | 6 |
3 files changed, 16 insertions, 11 deletions
diff --git a/src/event/FullyBufferedSocket.cxx b/src/event/FullyBufferedSocket.cxx index 87d29296e..9bb82a600 100644 --- a/src/event/FullyBufferedSocket.cxx +++ b/src/event/FullyBufferedSocket.cxx @@ -60,15 +60,14 @@ FullyBufferedSocket::Flush() { assert(IsDefined()); - size_t length; - const void *data = output.Read(&length); - if (data == nullptr) { + const auto data = output.Read(); + if (data.IsNull()) { IdleMonitor::Cancel(); CancelWrite(); return true; } - auto nbytes = DirectWrite(data, length); + auto nbytes = DirectWrite(data.data, data.size); if (gcc_unlikely(nbytes <= 0)) return nbytes == 0; diff --git a/src/util/PeakBuffer.cxx b/src/util/PeakBuffer.cxx index a3659b8f4..7db1c97dc 100644 --- a/src/util/PeakBuffer.cxx +++ b/src/util/PeakBuffer.cxx @@ -45,19 +45,21 @@ PeakBuffer::IsEmpty() const fifo_buffer_is_empty(peak_buffer)); } -const void * -PeakBuffer::Read(size_t *length_r) const +ConstBuffer<void> +PeakBuffer::Read() const { if (normal_buffer != nullptr) { - const void *p = fifo_buffer_read(normal_buffer, length_r); + size_t size; + const void *p = fifo_buffer_read(normal_buffer, &size); if (p != nullptr) - return p; + return { p, size }; } if (peak_buffer != nullptr) { - const void *p = fifo_buffer_read(peak_buffer, length_r); + size_t size; + const void *p = fifo_buffer_read(peak_buffer, &size); if (p != nullptr) - return p; + return { p, size }; } return nullptr; diff --git a/src/util/PeakBuffer.hxx b/src/util/PeakBuffer.hxx index a3f385e3e..0e58e80b8 100644 --- a/src/util/PeakBuffer.hxx +++ b/src/util/PeakBuffer.hxx @@ -20,11 +20,13 @@ #ifndef MPD_PEAK_BUFFER_HXX #define MPD_PEAK_BUFFER_HXX +#include "ConstBuffer.hxx" #include "Compiler.h" #include <stddef.h> struct fifo_buffer; +template<typename T> struct ConstBuffer; /** * A FIFO-like buffer that will allocate more memory on demand to @@ -57,7 +59,9 @@ public: gcc_pure bool IsEmpty() const; - const void *Read(size_t *length_r) const; + gcc_pure + ConstBuffer<void> Read() const; + void Consume(size_t length); bool Append(const void *data, size_t length); |