You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
714 B
C++

// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright The Music Player Daemon Project
#include "InputStream.hxx"
class MemoryInputStream final : public InputStream {
std::span<const std::byte> src;
public:
MemoryInputStream(const char *_uri, Mutex &_mutex,
std::span<const std::byte> _src) noexcept
:InputStream(_uri, _mutex), src(_src)
{
size = src.size();
seekable = true;
SetReady();
}
/* virtual methods from InputStream */
[[nodiscard]] bool IsEOF() const noexcept override {
return GetOffset() >= GetSize();
}
size_t Read(std::unique_lock<Mutex> &lock,
std::span<std::byte> dest) override;
void Seek(std::unique_lock<Mutex> &lock,
offset_type offset) override;
};