- From: Domenic Denicola <notifications@github.com>
- Date: Thu, 19 Mar 2015 23:40:01 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/issues/301/83939205@github.com>
My current thinking based on discussions this morning:
- pull(enqueue, close, error) becomes pull(enqueue, close, error, spaceLeftGetter) in functionality. (In name and shape, maybe `pull({ enqueue(), close(), error(), desiredSize })`? Can be settled afterward though.)
- Strategies need to be modified to have high water mark directly instead of having flexible shouldApplyBackpressure predicate. (Maybe we allow it to be updated, but unsure by who or how.)
- The when-should-we-call-pull logic stays similar to how it is now, with one addition:
- After start
- If queue size changes, up or down, and _either_:
- spaceLeft = HWM - queueSize > 0, or
- there are pending reads
- Promise-debounced
With this change, and a strategy that says HWM = 0, read() will directly correspond to pull(), which is good. (The "if there are pending reads" ensures it.)
With a strategy that has HWM > 0, then pull will be called whenever the queue size is less than the high water mark, and it will be called with spaceLeft (or "desiredSize" maybe) = HWM - current queue size, which allows it to make intelligent decisions about how to generate chunks that it will enqueue.
---
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/issues/301#issuecomment-83939205
Received on Friday, 20 March 2015 06:40:28 UTC