- From: Takeshi Yoshino <notifications@github.com>
- Date: Wed, 17 Jun 2015 22:23:33 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/issues/367@github.com>
Putting together @domenic's `reader.bytesRead` idea to address https://github.com/yutakahirano/fetch-with-streams/issues/37: - Fail `cache.put()` when the stream has been partially/fully drained https://github.com/yutakahirano/fetch-with-streams/issues/37#issuecomment-110109499 - Content-Length https://github.com/yutakahirano/fetch-with-streams/issues/37#issuecomment-110945488 Request/Response constructor saves the current value of `.bytesRead` https://github.com/whatwg/streams/issues/362#issuecomment-112984341 ``` const rbs = ...; // BodyInit as-is, or created from ArrayBuffer, etc. this._bodySize = ...; // undefined for RBS. The length of BodyInit for the others const reader = rbs.getReader(); this._bytesReadAtConstruction = reader.bytesRead; reader.releaseLock(); ``` `cache.put()`, etc. checks if `req._bytesReadAtConstruction` has been changed or not. ``` const reader = req.body.getReader(); if (reader.bytesRead !== this._bytesReadAtConstruction) { throw new TypeError(); } // Proceed with consuming body ``` `fetch()` computes the number of bytes remaining to generate the up-to-date value to be used for the Content-Length header. ``` const reader = req.body.getReader(); if (req._bodySize !== undefined) { const currentSize = req._bodySize - reader.bytesRead; // Generate Content-Length header } ``` --- Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/issues/367
Received on Thursday, 18 June 2015 05:24:13 UTC