Re: [whatwg/streams] Add an abstraction to pull from buffer into ReadableStream (PR #1263)

@domenic commented on this pull request.

So one issue here is that this "buffer" type, and the operations on it, are undefined. The operations seem to be:

- "extracting from" which returns a byte sequence while presumably modifying the buffer;
- "size" which returns an integer; and
- "append" in fetch

I was OK with this as a one-off over in fetch, but since we're encountering this a couple times, we should think a bit harder about whether it's the route we want to go down. I.e., how should we represent underlying platform byte buffers in specs.

Options I can see:

- Leave it as-is in this PR. It's fine, probably people know what it means.
- Define a "platform byte buffer" type, probably in Streams, with a couple sentences describing what it generally corresponds to and explaining the two operations you can apply to one of these platform byte buffers.
- Use byte sequences instead. Then specs like Fetch would say something like "Let |buffer| be an empty [=byte sequence=]. NOTE: this represents the internal buffer inside the network layer of the user agent".

I think using byte sequences would be most reasonable. WDYT?

> @@ -6752,6 +6752,29 @@ mark=] is greater than zero.
      [$ReadableByteStreamControllerEnqueue$](|stream|.[=ReadableStream/[[controller]]=], |chunk|).
 </div>
 
+<div algorithm>
+ To <dfn export for="ReadableStream">pull from buffer</dfn> |buffer| into a {{ReadableStream}}
+ |stream|:
+
+ 1. Let |available| be the size of |buffer|.
+ 1. Let |desiredSize| be |available|.
+ 1. If |stream|'s [=ReadableStream/current BYOB request view=] is non-null, then set
+    |desiredSize| to |stream|'s [=ReadableStream/current BYOB request view=]'s
+    [=BufferSource/byte length=].
+ 1. Let |extractSize| be the smaller value of |available| and |desiredSize|.
+ 1. Let |bytes| be the result of extracting |extractSize| of bytes from |buffer|.
+ 1. If |stream|s [=ReadableStream/current BYOB request view=] is non-null, then:

```suggestion
 1. If |stream|'s [=ReadableStream/current BYOB request view=] is non-null, then:
```

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/1263#pullrequestreview-1366276447
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/streams/pull/1263/review/1366276447@github.com>

Received on Friday, 31 March 2023 05:38:25 UTC