Commit 1f523be7 authored by Max Kellermann's avatar Max Kellermann

util/PeakBuffer: return ConstBuffer<void>

parent f2a20a0a
......@@ -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;
......
......@@ -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;
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment