- From: <bugzilla@jessica.w3.org>
- Date: Wed, 06 Nov 2013 06:57:33 +0000
- To: public-webapps@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=23736
Bug ID: 23736
Summary: [Streams API] Add fork() method instead of having
pipe(Stream[]) overload
Product: WebAppsWG
Version: unspecified
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: Streams API
Assignee: tyoshino@google.com
Reporter: tyoshino@google.com
QA Contact: public-webapps-bugzilla@w3.org
CC: mike@w3.org, public-webapps@w3.org
There're requests to make it able to mirror a byte stream to multiple
destinations. Currently, it's addressed by pipe(Stream[]) but it involves
memory copy.
Rather than that, we could choose to make ReadableByteStream clonable.
fork() creates another ReadableByteStream instance that refers to the same
internal data source as the original ReadableByteStream. Implementation of the
original ReadableByteStream may choose to have range reference counting to
control lifetime of the original data source sequence.
Each ReadableByteStream works like "reading cursors" for the original data
source.
Since the internal data source sequence is not drained until all the cursors
are done, a slow consumer can block fast ones.
If you don't want to block the faster consumers, you can choose to insert a
ByteStream to buffer data for the slow consumer while keep draining data from
the original data source quickly.
----
We haven't done enough study about necessity of pipe().
pull/push strategy of pipe() should also be well researched.
--
You are receiving this mail because:
You are on the CC list for the bug.
Received on Wednesday, 6 November 2013 06:57:34 UTC