- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 19 Jul 2021 15:32:24 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/1145/review/710028711@github.com>
@domenic commented on this pull request.
This seems way too easy! I expected something more like the manual loop you would have to do if writing this in userspace.
If it works, I definitely like this approach. I imagine tests will let us know if it does...
> @@ -1236,7 +1251,10 @@ function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDe
let done = false;
if (stream._state === 'closed') {
- assert(pullIntoDescriptor.bytesFilled === 0);
+ assert(pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize === 0);
+ if (!pullIntoDescriptor.readFully) {
Maybe make this if (readFully) { assert1 } else { assert2 }.
Even though your first assert makes sense in both cases, it feels a bit redundant and less clear.
> @@ -1453,7 +1477,7 @@ function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(contro
}
}
-function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) {
+function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest, readFully = false) {
I don't think the defaulting is needed? It only has one (now two) call sites.
> @@ -1550,7 +1575,7 @@ function ReadableByteStreamControllerRespond(controller, bytesWritten) {
}
function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
- assert(firstDescriptor.bytesFilled === 0);
+ assert(firstDescriptor.bytesFilled % firstDescriptor.elementSize === 0);
Should this be a dual assert like the above?
> @@ -1570,6 +1595,10 @@ function ReadableByteStreamControllerRespondInReadableState(controller, bytesWri
return;
}
+ if (pullIntoDescriptor.readFully && pullIntoDescriptor.bytesFilled < pullIntoDescriptor.byteLength) {
+ return;
Maybe add a comment here (eventually a spec note) explaining that, IIUC, this is where the magic happens. If we're trying to read fully and haven't filled things up yet, just return, leaving the modified pull-into descriptor in the queue. The next time around we'll pick up right back here, until we're full.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/1145#pullrequestreview-710028711
Received on Monday, 19 July 2021 22:32:36 UTC