- From: Domenic Denicola <notifications@github.com>
- Date: Thu, 04 Aug 2016 23:54:44 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/pull/504/c237770834@github.com>
Ah, I understand better now. OK, hmm. I wonder if there's a way to fix this while also making our socket API more like the low-level version. (I am already a little unhappy that setTCPWindowSize is fictional.) I guess that is in a large part what the PR is trying to do. Maybe one way of getting a bit less complexity is to pretend we had a `socket.select2()` that returned a promise, instead of an EventTarget. The translation between low-level polling in C and a higher-level event loop language is tricky to capture, but I think that might be a better mapping. (Is `select2()` a good name, or better to stick with something schematic like `waitForReadable()`?) Concretely, here is what I am thinking: ```js start(controller) { socket.setTCPWindowSize(Math.max(0, controller.desiredSize)); socket.onend = () => controller.close(); readRepeatedly().catch(e => { if (e.code === "EOF") { controller.close(); } else { controller.error(e) } }); function readRepeatedly() { return socket.select2().then(() => { // Since the socket can become readable even when there’s // no pending BYOB requests, we need to handle both cases. if (controller.byobRequest) { const v = controller.byobRequest.view; const bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength); controller.byobRequest.respond(bytesRead); } else { const buffer = new ArrayBuffer(DEFAULT_WINDOW_SIZE); const bytesRead = socket.readInto(buffer, 0, DEFAULT_WINDOW_SIZE); controller.enqueue(new Uint8Array(buffer, 0, bytesRead)); } // The internal queue size has changed, so propagate // the backpressure signal to the underlying source. socket.setTCPWindowSize(Math.max(0, controller.desiredSize)); return readRepeatedly(); }); } }, ``` --- 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/504#issuecomment-237770834
Received on Friday, 5 August 2016 06:55:17 UTC