- 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