/* * Copyright (c) 2024, Kenneth Myhra * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::Fetch::Infrastructure { // https://fetch.spec.whatwg.org/#incrementally-read-loop class IncrementalReadLoopReadRequest : public Streams::ReadRequest { JS_CELL(IncrementalReadLoopReadRequest, Streams::ReadRequest); JS_DECLARE_ALLOCATOR(IncrementalReadLoopReadRequest); public: IncrementalReadLoopReadRequest(JS::NonnullGCPtr, JS::NonnullGCPtr, JS::NonnullGCPtr task_destination, Body::ProcessBodyChunkCallback, Body::ProcessEndOfBodyCallback, Body::ProcessBodyErrorCallback); virtual void on_chunk(JS::Value chunk) override; virtual void on_close() override; virtual void on_error(JS::Value error) override; private: virtual void visit_edges(Visitor&) override; JS::NonnullGCPtr m_body; JS::NonnullGCPtr m_reader; JS::NonnullGCPtr m_task_destination; Body::ProcessBodyChunkCallback m_process_body_chunk; Body::ProcessEndOfBodyCallback m_process_end_of_body; Body::ProcessBodyErrorCallback m_process_body_error; }; }