IncrementalReadLoopReadRequest.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2024, Kenneth Myhra <kennethmyhra@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/Fetch/Infrastructure/HTTP/Bodies.h>
  8. #include <LibWeb/Streams/ReadableStreamDefaultReader.h>
  9. namespace Web::Fetch::Infrastructure {
  10. // https://fetch.spec.whatwg.org/#incrementally-read-loop
  11. class IncrementalReadLoopReadRequest : public Streams::ReadRequest {
  12. JS_CELL(IncrementalReadLoopReadRequest, JS::Cell);
  13. JS_DECLARE_ALLOCATOR(IncrementalReadLoopReadRequest);
  14. public:
  15. IncrementalReadLoopReadRequest(JS::NonnullGCPtr<Body>, JS::NonnullGCPtr<Streams::ReadableStreamDefaultReader>, JS::NonnullGCPtr<JS::Object> task_destination, Body::ProcessBodyChunkCallback, Body::ProcessEndOfBodyCallback, Body::ProcessBodyErrorCallback);
  16. virtual void on_chunk(JS::Value chunk) override;
  17. virtual void on_close() override;
  18. virtual void on_error(JS::Value error) override;
  19. private:
  20. virtual void visit_edges(Visitor&) override;
  21. JS::NonnullGCPtr<Body> m_body;
  22. JS::NonnullGCPtr<Streams::ReadableStreamDefaultReader> m_reader;
  23. JS::NonnullGCPtr<JS::Object> m_task_destination;
  24. Body::ProcessBodyChunkCallback m_process_body_chunk;
  25. Body::ProcessEndOfBodyCallback m_process_end_of_body;
  26. Body::ProcessBodyErrorCallback m_process_body_error;
  27. };
  28. }