ReadableStreamBYOBRequest.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>
  3. * Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <LibWeb/Bindings/PlatformObject.h>
  9. #include <LibWeb/Forward.h>
  10. #include <LibWeb/Streams/ReadableByteStreamController.h>
  11. #include <LibWeb/WebIDL/Types.h>
  12. namespace Web::Streams {
  13. // https://streams.spec.whatwg.org/#readablestreambyobrequest
  14. class ReadableStreamBYOBRequest : public Bindings::PlatformObject {
  15. WEB_PLATFORM_OBJECT(ReadableStreamBYOBRequest, Bindings::PlatformObject);
  16. JS_DECLARE_ALLOCATOR(ReadableStreamBYOBRequest);
  17. public:
  18. virtual ~ReadableStreamBYOBRequest() override = default;
  19. JS::GCPtr<WebIDL::ArrayBufferView> view();
  20. void set_controller(JS::GCPtr<ReadableByteStreamController> value) { m_controller = value; }
  21. void set_view(JS::GCPtr<WebIDL::ArrayBufferView> value) { m_view = value; }
  22. WebIDL::ExceptionOr<void> respond(WebIDL::UnsignedLongLong bytes_written);
  23. WebIDL::ExceptionOr<void> respond_with_new_view(JS::Handle<WebIDL::ArrayBufferView> const& view);
  24. private:
  25. explicit ReadableStreamBYOBRequest(JS::Realm&);
  26. virtual void initialize(JS::Realm&) override;
  27. virtual void visit_edges(Cell::Visitor&) override;
  28. // https://streams.spec.whatwg.org/#readablestreambyobrequest-controller
  29. // The parent ReadableByteStreamController instance
  30. JS::GCPtr<ReadableByteStreamController> m_controller;
  31. // https://streams.spec.whatwg.org/#readablestreambyobrequest-view
  32. // A typed array representing the destination region to which the controller can write generated data, or null after the BYOB request has been invalidated.
  33. JS::GCPtr<WebIDL::ArrayBufferView> m_view;
  34. };
  35. }