/* * Copyright (c) 2023, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::Streams { // https://streams.spec.whatwg.org/#readablestreamgenericreader class ReadableStreamGenericReaderMixin { public: virtual ~ReadableStreamGenericReaderMixin() = default; WebIDL::ExceptionOr> closed(); WebIDL::ExceptionOr> cancel(JS::Value reason); JS::GCPtr stream() const { return m_stream; } void set_stream(JS::GCPtr stream) { m_stream = stream; } JS::GCPtr closed_promise_capability() { return m_closed_promise; } void set_closed_promise_capability(JS::GCPtr promise) { m_closed_promise = promise; } virtual bool is_default_reader() const { return false; } protected: void visit_edges(JS::Cell::Visitor&); // https://streams.spec.whatwg.org/#readablestreamgenericreader-closedpromise // A promise returned by the reader's closed getter JS::GCPtr m_closed_promise; // https://streams.spec.whatwg.org/#readablestreamgenericreader-stream // A ReadableStream instance that owns this reader JS::GCPtr m_stream; }; }