Re: [streams] Byte stream update, including reference implementation (#361)

> +  const stream = controller._controlledReadableByteStream;
> +
> +  if (typeof pullIntoFunction !== 'function') {
> +    DestroyReadableByteStreamController(controller);
> +    ErrorReadableByteStream(stream, new TypeError('pullInto property of an underlying byte source must be a function'));
> +    return;
> +  }
> +
> +  assert(controller._pendingPullIntos.length > 0);
> +  const pullIntoDescriptor = controller._pendingPullIntos[0];
> +
> +  controller._callPullOrPullIntoLaterIfNeeded = false;
> +  controller._insideUnderlyingByteSource = true;
> +
> +  try {
> +    pullIntoFunction.apply(source, [pullIntoDescriptor.buffer,

It's (buffer, offsetToWriteAt, sizeAllowedToWrite). The buffer we received from the consumer is `byteLength` long. It's already filled for `bytesFilled` bytes. So, byteLength - bytesFilled bytes are available for writing.

I'm fine with changing this to Uint8Array. I kept this ArrayBufferView free since it seems a little complex interface is acceptable for the controller. But yeah, I realized that this is just inconsistent with enqueue() which accepts ArrayBufferViews.

---
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/361/files#r33654433

Received on Wednesday, 1 July 2015 07:29:31 UTC