- From: Aymeric Vitte <vitteaymeric@gmail.com>
- Date: Thu, 26 Sep 2013 11:36:20 +0200
- To: Takeshi Yoshino <tyoshino@google.com>
- CC: Isaac Schlueter <i@izs.me>, Jonas Sicking <jonas@sicking.cc>, Austin William Wright <aaa@bzfx.net>, Domenic Denicola <domenic@domenicdenicola.com>, "public-webapps@w3.org" <public-webapps@w3.org>
Looks good, comments/questions :
- what's the use of readEncoding?
- StreamReadType: add MediaStream? (and others if existing)
- would it be possible to pipe from StreamReadType to other StreamReadType?
- would it be possible to pipe from a source to different targets (my
example of encrypt/hash at the same time)?
- what is the link between the API and the Stream
(responseType='stream')? How do you handle this for APIs where
responseType does not really apply (mspack, crypto...)
Regards
Aymeric
Le 26/09/2013 06:17, Takeshi Yoshino a écrit :
> As we don't see any strong demand for flow control and sync read
> functionality, I've revised the proposal.
>
> Though we can separate state/error signaling from Stream and keep them
> done by each API (e.g. XHR) as Aymeric said, EoF signal still needs to
> be conveyed through Stream.
>
> ----
>
> enum StreamReadType {
> "",
> "blob",
> "arraybuffer",
> "text"
> };
>
> interface StreamConsumeResult {
> readonly attribute boolean eof;
> readonly any data;
> readonly unsigned long long size;
> };
>
> [Constructor(optional DOMString mime)]
> interface Stream {
> readonly attribute DOMString type; // MIME type
>
> // Rejected on error. No more write op shouldn't be made.
> //
> // Fulfilled when the write completes. It doesn't guarantee that the
> written data has been
> // read out successfully.
> //
> // The contents of ArrayBufferView must not be modified until the
> promise is fulfilled.
> //
> // Fulfill may be delayed when the Stream considers itself to be full.
> //
> // write(), close() must not be called again until the Promise of
> the last write() is fulfilled.
> Promise<void> write((DOMString or ArrayBufferView or Blob)? data);
> void close();
>
> attribute StreamReadType readType;
> attribute DOMString readEncoding;
>
> // read(), skip(), pipe() must not be called again until the Promise
> of the last read(), skip(), pipe() is fulfilled.
>
> // Rejected on error. No more read op shouldn't be made.
> //
> // If size is specified,
> // - if EoF: fulfilled with data up to EoF
> // - otherwise: fulfilled with data of size bytes
> //
> // If size is omitted, (all or part of) data available for read now
> will be returned.
> //
> // If readType is set to text, size of the result may be smaller
> than the value specified for the size argument.
> Promise<StreamConsumeResult> read(optional [Clamp] long long size);
>
> // Rejected on error. Fulfilled on completion.
> //
> // .data of result is not used. .size of result is the skipped amount.
> Promise<StreamConsumeResult> skip([Clamp] long long size); // .data
> is skipped size
>
> // Rejected on error. Fulfilled on completion.
> //
> // If size is omitted, transfer until EoF is encountered.
> //
> // .data of result is not used. .size of result is the size of data
> transferred.
> Promise<StreamConsumeResult> pipe(Stream destination, optional
> [Clamp] long long size);
> };
>
--
Peersm : http://www.peersm.com
node-Tor : https://www.github.com/Ayms/node-Tor
GitHub : https://www.github.com/Ayms
Received on Thursday, 26 September 2013 09:36:50 UTC