mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:18:11 +00:00
LibCore: Rename MemoryStream
to FixedMemoryStream
This is to differentiate between the upcoming `AllocatingMemoryStream`, which automatically allocates memory as needed instead of operating on a static memory area.
This commit is contained in:
parent
c4f68bde57
commit
c6d71ca727
11 changed files with 29 additions and 27 deletions
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size)
|
extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size)
|
||||||
{
|
{
|
||||||
auto bufstream_result = Core::Stream::MemoryStream::construct({ data, size });
|
auto bufstream_result = Core::Stream::FixedMemoryStream::construct({ data, size });
|
||||||
if (bufstream_result.is_error()) {
|
if (bufstream_result.is_error()) {
|
||||||
dbgln("MemoryStream::construct() failed.");
|
dbgln("MemoryStream::construct() failed.");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size)
|
extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size)
|
||||||
{
|
{
|
||||||
auto input_stream_or_error = Core::Stream::MemoryStream::construct({ data, size });
|
auto input_stream_or_error = Core::Stream::FixedMemoryStream::construct({ data, size });
|
||||||
|
|
||||||
if (input_stream_or_error.is_error())
|
if (input_stream_or_error.is_error())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -29,7 +29,7 @@ TEST_CASE(canonical_code_simple)
|
||||||
};
|
};
|
||||||
|
|
||||||
auto const huffman = Compress::CanonicalCode::from_bytes(code).value();
|
auto const huffman = Compress::CanonicalCode::from_bytes(code).value();
|
||||||
auto memory_stream = MUST(Core::Stream::MemoryStream::construct(input));
|
auto memory_stream = MUST(Core::Stream::FixedMemoryStream::construct(input));
|
||||||
auto bit_stream = MUST(Core::Stream::LittleEndianInputBitStream::construct(move(memory_stream)));
|
auto bit_stream = MUST(Core::Stream::LittleEndianInputBitStream::construct(move(memory_stream)));
|
||||||
|
|
||||||
for (size_t idx = 0; idx < 9; ++idx)
|
for (size_t idx = 0; idx < 9; ++idx)
|
||||||
|
@ -49,7 +49,7 @@ TEST_CASE(canonical_code_complex)
|
||||||
};
|
};
|
||||||
|
|
||||||
auto const huffman = Compress::CanonicalCode::from_bytes(code).value();
|
auto const huffman = Compress::CanonicalCode::from_bytes(code).value();
|
||||||
auto memory_stream = MUST(Core::Stream::MemoryStream::construct(input));
|
auto memory_stream = MUST(Core::Stream::FixedMemoryStream::construct(input));
|
||||||
auto bit_stream = MUST(Core::Stream::LittleEndianInputBitStream::construct(move(memory_stream)));
|
auto bit_stream = MUST(Core::Stream::LittleEndianInputBitStream::construct(move(memory_stream)));
|
||||||
|
|
||||||
for (size_t idx = 0; idx < 12; ++idx)
|
for (size_t idx = 0; idx < 12; ++idx)
|
||||||
|
|
|
@ -42,7 +42,7 @@ Result<NonnullOwnPtr<FlacLoaderPlugin>, LoaderError> FlacLoaderPlugin::try_creat
|
||||||
|
|
||||||
Result<NonnullOwnPtr<FlacLoaderPlugin>, LoaderError> FlacLoaderPlugin::try_create(Bytes buffer)
|
Result<NonnullOwnPtr<FlacLoaderPlugin>, LoaderError> FlacLoaderPlugin::try_create(Bytes buffer)
|
||||||
{
|
{
|
||||||
auto stream = LOADER_TRY(Core::Stream::MemoryStream::construct(buffer));
|
auto stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(buffer));
|
||||||
auto loader = make<FlacLoaderPlugin>(move(stream));
|
auto loader = make<FlacLoaderPlugin>(move(stream));
|
||||||
|
|
||||||
LOADER_TRY(loader->initialize());
|
LOADER_TRY(loader->initialize());
|
||||||
|
@ -78,7 +78,7 @@ MaybeLoaderError FlacLoaderPlugin::parse_header()
|
||||||
// Receive the streaminfo block
|
// Receive the streaminfo block
|
||||||
auto streaminfo = TRY(next_meta_block(*bit_input));
|
auto streaminfo = TRY(next_meta_block(*bit_input));
|
||||||
FLAC_VERIFY(streaminfo.type == FlacMetadataBlockType::STREAMINFO, LoaderError::Category::Format, "First block must be STREAMINFO");
|
FLAC_VERIFY(streaminfo.type == FlacMetadataBlockType::STREAMINFO, LoaderError::Category::Format, "First block must be STREAMINFO");
|
||||||
auto streaminfo_data_memory = LOADER_TRY(Core::Stream::MemoryStream::construct(streaminfo.data.bytes()));
|
auto streaminfo_data_memory = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(streaminfo.data.bytes()));
|
||||||
auto streaminfo_data = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*streaminfo_data_memory)));
|
auto streaminfo_data = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*streaminfo_data_memory)));
|
||||||
|
|
||||||
// 11.10 METADATA_BLOCK_STREAMINFO
|
// 11.10 METADATA_BLOCK_STREAMINFO
|
||||||
|
@ -149,7 +149,7 @@ MaybeLoaderError FlacLoaderPlugin::parse_header()
|
||||||
// 11.19. METADATA_BLOCK_PICTURE
|
// 11.19. METADATA_BLOCK_PICTURE
|
||||||
MaybeLoaderError FlacLoaderPlugin::load_picture(FlacRawMetadataBlock& block)
|
MaybeLoaderError FlacLoaderPlugin::load_picture(FlacRawMetadataBlock& block)
|
||||||
{
|
{
|
||||||
auto memory_stream = LOADER_TRY(Core::Stream::MemoryStream::construct(block.data.bytes()));
|
auto memory_stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(block.data.bytes()));
|
||||||
auto picture_block_bytes = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*memory_stream)));
|
auto picture_block_bytes = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*memory_stream)));
|
||||||
|
|
||||||
PictureData picture {};
|
PictureData picture {};
|
||||||
|
@ -186,7 +186,7 @@ MaybeLoaderError FlacLoaderPlugin::load_picture(FlacRawMetadataBlock& block)
|
||||||
// 11.13. METADATA_BLOCK_SEEKTABLE
|
// 11.13. METADATA_BLOCK_SEEKTABLE
|
||||||
MaybeLoaderError FlacLoaderPlugin::load_seektable(FlacRawMetadataBlock& block)
|
MaybeLoaderError FlacLoaderPlugin::load_seektable(FlacRawMetadataBlock& block)
|
||||||
{
|
{
|
||||||
auto memory_stream = LOADER_TRY(Core::Stream::MemoryStream::construct(block.data.bytes()));
|
auto memory_stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(block.data.bytes()));
|
||||||
auto seektable_bytes = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*memory_stream)));
|
auto seektable_bytes = LOADER_TRY(BigEndianInputBitStream::construct(Core::Stream::Handle<Core::Stream::Stream>(*memory_stream)));
|
||||||
for (size_t i = 0; i < block.length / 18; ++i) {
|
for (size_t i = 0; i < block.length / 18; ++i) {
|
||||||
// 11.14. SEEKPOINT
|
// 11.14. SEEKPOINT
|
||||||
|
|
|
@ -31,7 +31,7 @@ Result<NonnullOwnPtr<MP3LoaderPlugin>, LoaderError> MP3LoaderPlugin::try_create(
|
||||||
|
|
||||||
Result<NonnullOwnPtr<MP3LoaderPlugin>, LoaderError> MP3LoaderPlugin::try_create(Bytes buffer)
|
Result<NonnullOwnPtr<MP3LoaderPlugin>, LoaderError> MP3LoaderPlugin::try_create(Bytes buffer)
|
||||||
{
|
{
|
||||||
auto stream = LOADER_TRY(Core::Stream::MemoryStream::construct(buffer));
|
auto stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(buffer));
|
||||||
auto loader = make<MP3LoaderPlugin>(move(stream));
|
auto loader = make<MP3LoaderPlugin>(move(stream));
|
||||||
|
|
||||||
LOADER_TRY(loader->initialize());
|
LOADER_TRY(loader->initialize());
|
||||||
|
|
|
@ -35,7 +35,7 @@ Result<NonnullOwnPtr<WavLoaderPlugin>, LoaderError> WavLoaderPlugin::try_create(
|
||||||
|
|
||||||
Result<NonnullOwnPtr<WavLoaderPlugin>, LoaderError> WavLoaderPlugin::try_create(Bytes buffer)
|
Result<NonnullOwnPtr<WavLoaderPlugin>, LoaderError> WavLoaderPlugin::try_create(Bytes buffer)
|
||||||
{
|
{
|
||||||
auto stream = LOADER_TRY(Core::Stream::MemoryStream::construct(buffer));
|
auto stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(buffer));
|
||||||
auto loader = make<WavLoaderPlugin>(move(stream));
|
auto loader = make<WavLoaderPlugin>(move(stream));
|
||||||
|
|
||||||
LOADER_TRY(loader->initialize());
|
LOADER_TRY(loader->initialize());
|
||||||
|
@ -115,7 +115,7 @@ static ErrorOr<double> read_sample(Core::Stream::Stream& stream)
|
||||||
LoaderSamples WavLoaderPlugin::samples_from_pcm_data(Bytes const& data, size_t samples_to_read) const
|
LoaderSamples WavLoaderPlugin::samples_from_pcm_data(Bytes const& data, size_t samples_to_read) const
|
||||||
{
|
{
|
||||||
FixedArray<Sample> samples = LOADER_TRY(FixedArray<Sample>::try_create(samples_to_read));
|
FixedArray<Sample> samples = LOADER_TRY(FixedArray<Sample>::try_create(samples_to_read));
|
||||||
auto stream = LOADER_TRY(Core::Stream::MemoryStream::construct(move(data)));
|
auto stream = LOADER_TRY(Core::Stream::FixedMemoryStream::construct(move(data)));
|
||||||
|
|
||||||
switch (m_sample_format) {
|
switch (m_sample_format) {
|
||||||
case PcmSampleFormat::Uint8:
|
case PcmSampleFormat::Uint8:
|
||||||
|
|
|
@ -309,7 +309,7 @@ void DeflateDecompressor::close()
|
||||||
|
|
||||||
ErrorOr<ByteBuffer> DeflateDecompressor::decompress_all(ReadonlyBytes bytes)
|
ErrorOr<ByteBuffer> DeflateDecompressor::decompress_all(ReadonlyBytes bytes)
|
||||||
{
|
{
|
||||||
auto memory_stream = TRY(Core::Stream::MemoryStream::construct(bytes));
|
auto memory_stream = TRY(Core::Stream::FixedMemoryStream::construct(bytes));
|
||||||
DeflateDecompressor deflate_stream { move(memory_stream) };
|
DeflateDecompressor deflate_stream { move(memory_stream) };
|
||||||
DuplexMemoryStream output_stream;
|
DuplexMemoryStream output_stream;
|
||||||
|
|
||||||
|
|
|
@ -153,7 +153,7 @@ Optional<DeprecatedString> GzipDecompressor::describe_header(ReadonlyBytes bytes
|
||||||
|
|
||||||
ErrorOr<ByteBuffer> GzipDecompressor::decompress_all(ReadonlyBytes bytes)
|
ErrorOr<ByteBuffer> GzipDecompressor::decompress_all(ReadonlyBytes bytes)
|
||||||
{
|
{
|
||||||
auto memory_stream = TRY(Core::Stream::MemoryStream::construct(bytes));
|
auto memory_stream = TRY(Core::Stream::FixedMemoryStream::construct(bytes));
|
||||||
auto gzip_stream = make<GzipDecompressor>(move(memory_stream));
|
auto gzip_stream = make<GzipDecompressor>(move(memory_stream));
|
||||||
DuplexMemoryStream output_stream;
|
DuplexMemoryStream output_stream;
|
||||||
|
|
||||||
|
|
|
@ -15,16 +15,18 @@
|
||||||
|
|
||||||
namespace Core::Stream {
|
namespace Core::Stream {
|
||||||
|
|
||||||
class MemoryStream final : public SeekableStream {
|
/// A stream class that allows for reading/writing on a preallocated memory area
|
||||||
|
/// using a single read/write head.
|
||||||
|
class FixedMemoryStream final : public SeekableStream {
|
||||||
public:
|
public:
|
||||||
static ErrorOr<NonnullOwnPtr<MemoryStream>> construct(Bytes bytes)
|
static ErrorOr<NonnullOwnPtr<FixedMemoryStream>> construct(Bytes bytes)
|
||||||
{
|
{
|
||||||
return adopt_nonnull_own_or_enomem<MemoryStream>(new (nothrow) MemoryStream(bytes));
|
return adopt_nonnull_own_or_enomem<FixedMemoryStream>(new (nothrow) FixedMemoryStream(bytes));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ErrorOr<NonnullOwnPtr<MemoryStream>> construct(ReadonlyBytes bytes)
|
static ErrorOr<NonnullOwnPtr<FixedMemoryStream>> construct(ReadonlyBytes bytes)
|
||||||
{
|
{
|
||||||
return adopt_nonnull_own_or_enomem<MemoryStream>(new (nothrow) MemoryStream(bytes));
|
return adopt_nonnull_own_or_enomem<FixedMemoryStream>(new (nothrow) FixedMemoryStream(bytes));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool is_eof() const override { return m_offset >= m_bytes.size(); }
|
virtual bool is_eof() const override { return m_offset >= m_bytes.size(); }
|
||||||
|
@ -98,12 +100,12 @@ public:
|
||||||
size_t remaining() const { return m_bytes.size() - m_offset; }
|
size_t remaining() const { return m_bytes.size() - m_offset; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit MemoryStream(Bytes bytes)
|
explicit FixedMemoryStream(Bytes bytes)
|
||||||
: m_bytes(bytes)
|
: m_bytes(bytes)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit MemoryStream(ReadonlyBytes bytes)
|
explicit FixedMemoryStream(ReadonlyBytes bytes)
|
||||||
: m_bytes({ const_cast<u8*>(bytes.data()), bytes.size() })
|
: m_bytes({ const_cast<u8*>(bytes.data()), bytes.size() })
|
||||||
, m_writing_enabled(false)
|
, m_writing_enabled(false)
|
||||||
{
|
{
|
||||||
|
|
|
@ -80,7 +80,7 @@ static Optional<ByteBuffer> handle_content_encoding(ByteBuffer const& buf, Depre
|
||||||
} else if (content_encoding == "br") {
|
} else if (content_encoding == "br") {
|
||||||
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: buf is brotli compressed!");
|
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: buf is brotli compressed!");
|
||||||
|
|
||||||
auto bufstream_result = Core::Stream::MemoryStream::construct({ buf.data(), buf.size() });
|
auto bufstream_result = Core::Stream::FixedMemoryStream::construct({ buf.data(), buf.size() });
|
||||||
if (bufstream_result.is_error()) {
|
if (bufstream_result.is_error()) {
|
||||||
dbgln("Job::handle_content_encoding: MemoryStream::construct() failed.");
|
dbgln("Job::handle_content_encoding: MemoryStream::construct() failed.");
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -355,7 +355,7 @@ public:
|
||||||
private:
|
private:
|
||||||
HTTPHeadlessRequest(HTTP::HttpRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
HTTPHeadlessRequest(HTTP::HttpRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
||||||
: m_stream_backing_buffer(move(stream_backing_buffer))
|
: m_stream_backing_buffer(move(stream_backing_buffer))
|
||||||
, m_output_stream(Core::Stream::MemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
, m_output_stream(Core::Stream::FixedMemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
||||||
, m_socket(move(socket))
|
, m_socket(move(socket))
|
||||||
, m_job(HTTP::Job::construct(move(request), *m_output_stream))
|
, m_job(HTTP::Job::construct(move(request), *m_output_stream))
|
||||||
{
|
{
|
||||||
|
@ -381,7 +381,7 @@ public:
|
||||||
|
|
||||||
Optional<u32> m_response_code;
|
Optional<u32> m_response_code;
|
||||||
ByteBuffer m_stream_backing_buffer;
|
ByteBuffer m_stream_backing_buffer;
|
||||||
NonnullOwnPtr<Core::Stream::MemoryStream> m_output_stream;
|
NonnullOwnPtr<Core::Stream::FixedMemoryStream> m_output_stream;
|
||||||
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
||||||
NonnullRefPtr<HTTP::Job> m_job;
|
NonnullRefPtr<HTTP::Job> m_job;
|
||||||
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
||||||
|
@ -434,7 +434,7 @@ public:
|
||||||
private:
|
private:
|
||||||
HTTPSHeadlessRequest(HTTP::HttpRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
HTTPSHeadlessRequest(HTTP::HttpRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
||||||
: m_stream_backing_buffer(move(stream_backing_buffer))
|
: m_stream_backing_buffer(move(stream_backing_buffer))
|
||||||
, m_output_stream(Core::Stream::MemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
, m_output_stream(Core::Stream::FixedMemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
||||||
, m_socket(move(socket))
|
, m_socket(move(socket))
|
||||||
, m_job(HTTP::HttpsJob::construct(move(request), *m_output_stream))
|
, m_job(HTTP::HttpsJob::construct(move(request), *m_output_stream))
|
||||||
{
|
{
|
||||||
|
@ -460,7 +460,7 @@ public:
|
||||||
|
|
||||||
Optional<u32> m_response_code;
|
Optional<u32> m_response_code;
|
||||||
ByteBuffer m_stream_backing_buffer;
|
ByteBuffer m_stream_backing_buffer;
|
||||||
NonnullOwnPtr<Core::Stream::MemoryStream> m_output_stream;
|
NonnullOwnPtr<Core::Stream::FixedMemoryStream> m_output_stream;
|
||||||
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
||||||
NonnullRefPtr<HTTP::HttpsJob> m_job;
|
NonnullRefPtr<HTTP::HttpsJob> m_job;
|
||||||
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
||||||
|
@ -503,7 +503,7 @@ public:
|
||||||
private:
|
private:
|
||||||
GeminiHeadlessRequest(Gemini::GeminiRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
GeminiHeadlessRequest(Gemini::GeminiRequest&& request, NonnullOwnPtr<Core::Stream::BufferedSocketBase> socket, ByteBuffer&& stream_backing_buffer)
|
||||||
: m_stream_backing_buffer(move(stream_backing_buffer))
|
: m_stream_backing_buffer(move(stream_backing_buffer))
|
||||||
, m_output_stream(Core::Stream::MemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
, m_output_stream(Core::Stream::FixedMemoryStream::construct(m_stream_backing_buffer.bytes()).release_value_but_fixme_should_propagate_errors())
|
||||||
, m_socket(move(socket))
|
, m_socket(move(socket))
|
||||||
, m_job(Gemini::Job::construct(move(request), *m_output_stream))
|
, m_job(Gemini::Job::construct(move(request), *m_output_stream))
|
||||||
{
|
{
|
||||||
|
@ -529,7 +529,7 @@ public:
|
||||||
|
|
||||||
Optional<u32> m_response_code;
|
Optional<u32> m_response_code;
|
||||||
ByteBuffer m_stream_backing_buffer;
|
ByteBuffer m_stream_backing_buffer;
|
||||||
NonnullOwnPtr<Core::Stream::MemoryStream> m_output_stream;
|
NonnullOwnPtr<Core::Stream::FixedMemoryStream> m_output_stream;
|
||||||
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
NonnullOwnPtr<Core::Stream::BufferedSocketBase> m_socket;
|
||||||
NonnullRefPtr<Gemini::Job> m_job;
|
NonnullRefPtr<Gemini::Job> m_job;
|
||||||
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> m_response_headers;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue