input/InputStream: pass std::span<std::byte> to Read()
This commit is contained in:
@@ -42,7 +42,7 @@ public:
|
||||
#ifdef ENABLE_UPNP
|
||||
#include "input/InputStream.hxx"
|
||||
size_t
|
||||
InputStream::LockRead(void *, size_t)
|
||||
InputStream::LockRead(std::span<std::byte>)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@@ -60,10 +60,10 @@ DumpDecoderClient::OpenUri(const char *uri)
|
||||
}
|
||||
|
||||
size_t
|
||||
DumpDecoderClient::Read(InputStream &is, void *buffer, size_t length) noexcept
|
||||
DumpDecoderClient::Read(InputStream &is, std::span<std::byte> dest) noexcept
|
||||
{
|
||||
try {
|
||||
return is.LockRead(buffer, length);
|
||||
return is.LockRead(dest);
|
||||
} catch (...) {
|
||||
return 0;
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ public:
|
||||
void SeekError() noexcept override;
|
||||
InputStreamPtr OpenUri(const char *uri) override;
|
||||
size_t Read(InputStream &is,
|
||||
void *buffer, size_t length) noexcept override;
|
||||
std::span<std::byte> dest) noexcept override;
|
||||
void SubmitTimestamp(FloatDuration t) noexcept override;
|
||||
DecoderCommand SubmitAudio(InputStream *is,
|
||||
std::span<const std::byte> audio,
|
||||
|
@@ -29,9 +29,9 @@ public:
|
||||
}
|
||||
|
||||
size_t Read(std::unique_lock<Mutex> &,
|
||||
void *ptr, size_t read_size) override {
|
||||
size_t nbytes = std::min(remaining, read_size);
|
||||
memcpy(ptr, data, nbytes);
|
||||
std::span<std::byte> dest) override {
|
||||
size_t nbytes = std::min(remaining, dest.size());
|
||||
memcpy(dest.data(), data, nbytes);
|
||||
data += nbytes;
|
||||
remaining -= nbytes;
|
||||
offset += nbytes;
|
||||
@@ -60,14 +60,14 @@ TEST(RewindInputStream, Basic)
|
||||
EXPECT_EQ(offset_type(0), ris->GetOffset());
|
||||
|
||||
char buffer[16];
|
||||
size_t nbytes = ris->Read(lock, buffer, 2);
|
||||
size_t nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}.first(2)));
|
||||
EXPECT_EQ(size_t(2), nbytes);
|
||||
EXPECT_EQ('f', buffer[0]);
|
||||
EXPECT_EQ('o', buffer[1]);
|
||||
EXPECT_EQ(offset_type(2), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, 2);
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}.first(2)));
|
||||
EXPECT_EQ(size_t(2), nbytes);
|
||||
EXPECT_EQ('o', buffer[0]);
|
||||
EXPECT_EQ(' ', buffer[1]);
|
||||
@@ -78,7 +78,7 @@ TEST(RewindInputStream, Basic)
|
||||
EXPECT_EQ(offset_type(1), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, 2);
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}.first(2)));
|
||||
EXPECT_EQ(size_t(2), nbytes);
|
||||
EXPECT_EQ('o', buffer[0]);
|
||||
EXPECT_EQ('o', buffer[1]);
|
||||
@@ -89,21 +89,21 @@ TEST(RewindInputStream, Basic)
|
||||
EXPECT_EQ(offset_type(0), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, 2);
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}.first(2)));
|
||||
EXPECT_EQ(size_t(2), nbytes);
|
||||
EXPECT_EQ('f', buffer[0]);
|
||||
EXPECT_EQ('o', buffer[1]);
|
||||
EXPECT_EQ(offset_type(2), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, sizeof(buffer));
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}));
|
||||
EXPECT_EQ(size_t(2), nbytes);
|
||||
EXPECT_EQ('o', buffer[0]);
|
||||
EXPECT_EQ(' ', buffer[1]);
|
||||
EXPECT_EQ(offset_type(4), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, sizeof(buffer));
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}));
|
||||
EXPECT_EQ(size_t(3), nbytes);
|
||||
EXPECT_EQ('b', buffer[0]);
|
||||
EXPECT_EQ('a', buffer[1]);
|
||||
@@ -115,7 +115,7 @@ TEST(RewindInputStream, Basic)
|
||||
EXPECT_EQ(offset_type(3), ris->GetOffset());
|
||||
EXPECT_FALSE(ris->IsEOF());
|
||||
|
||||
nbytes = ris->Read(lock, buffer, sizeof(buffer));
|
||||
nbytes = ris->Read(lock, std::as_writable_bytes(std::span{buffer}));
|
||||
EXPECT_EQ(size_t(4), nbytes);
|
||||
EXPECT_EQ(' ', buffer[0]);
|
||||
EXPECT_EQ('b', buffer[1]);
|
||||
|
@@ -172,7 +172,7 @@ dump_input_stream(InputStream &is, FileDescriptor out,
|
||||
|
||||
std::byte buffer[MAX_CHUNK_SIZE];
|
||||
assert(chunk_size <= sizeof(buffer));
|
||||
size_t num_read = is.Read(lock, buffer, chunk_size);
|
||||
size_t num_read = is.Read(lock, {buffer, chunk_size});
|
||||
if (num_read == 0)
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user