author  Takeshi Yoshino <tyoshino@google.com> 
Fri, 10 Jan 2014 19:54:27 +0900  
changeset 123  2c23cbb3665f 
parent 122  667dbc39f9e6 
child 124  9dc273a030cc 
permissions  rwrr 
38
3cdd8b2d21d9
Merging changes made for preparing WD
Takeshi Yoshino <tyoshino@google.com>
parents:
37
diff
changeset

1 
<!DOCTYPE html> 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

2 

cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

3 
<html> 
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

4 

cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

5 
<head> 
83
afed6501a898
moved images, fixed typos, fixed header
fmoussa <feras.moussa@hotmail.com>
parents:
81
diff
changeset

6 
<title>Streams API</title> 
11
f99aafc91a32
First complete update to prep for FPWD
fmoussa <feras.moussa@hotmail.com>
parents:
10
diff
changeset

7 
<meta content="text/html;charset=utf8" httpequiv="ContentType"> 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

8 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

9 
<! <script class=remove src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js"></script> > 
10
bbfec9730bc4
Resolving respec js file path
fmoussa <feras.moussa@hotmail.com>
parents:
8
diff
changeset

10 
<script class="remove" src="https://www.w3.org/Tools/respec/respecw3ccommon"></script> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

11 
<! <script class="remove" src="respecw3ccommon.js"></script> > 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

12 

10
bbfec9730bc4
Resolving respec js file path
fmoussa <feras.moussa@hotmail.com>
parents:
8
diff
changeset

13 
<script class="remove"> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

14 
var respecConfig = { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

15 
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

16 
specStatus: "ED", 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

17 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

18 
// the specification's short name, as in http://www.w3.org/TR/shortname/ 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

19 
shortName: "streamsapi", 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

20 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

21 
// if your specification has a subtitle that goes below the main 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

22 
// formal title, define it here 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

23 
// subtitle : "an excellent document", 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

24 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

25 
// if you wish the publication date to be other than today, set this 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

26 
// publishDate: "yyyymmdd", 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

27 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

28 
// if the specification's copyright date is a range of years, specify 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

29 
// the start date here: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

30 
// copyrightStart: "2005" 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

31 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

32 
// if there is a previously published draft, uncomment this and set its YYYYMMDD date 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

33 
// and its maturity status 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

34 
// previousPublishDate: "yyyymmdd", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

35 
// previousMaturity: "WD", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

36 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

37 
// if there a publicly available Editor's Draft, this is the link 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

38 
edDraftURI: "http://dvcs.w3.org/hg/streamsapi/rawfile/tip/Overview.htm", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

39 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

40 
// if this is a LCWD, uncomment and set the end of its review period 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

41 
// lcEnd: "20090805", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

42 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

43 
// if you want to have extra CSS, append them to this list 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

44 
// it is recommended that the respec.css stylesheet be kept 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

45 
//extraCSS: ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

46 
// "http://www.w3.org/StyleSheets/TR/W3CED.css", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

47 
// ], 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

48 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

49 
// editors, add as many as you like 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

50 
// only "name" is required 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

51 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

52 
localBiblio: { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

53 
"EncodingDetermination": { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

54 
title: "Encoding", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

55 
href: "http://encoding.spec.whatwg.org/", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

56 
authors: ["Anne van Kesteren", "Joshua Bell"], 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

57 
publisher: "WHATWG" 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

58 
} 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

59 
}, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

60 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

61 
editors: [ 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

62 
{ name: "Feras Moussa", url: "mailto:feras.moussa@hotmail.com", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

63 
company: "Invited Expert", }, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

64 
{ name: "Takeshi Yoshino", url: "mailto:tyoshino@google.com", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

65 
company: "Google, Inc.", }, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

66 
], 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

67 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

68 
// authors, add as many as you like. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

69 
// This is optional, uncomment if you have authors as well as editors. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

70 
// only "name" is required. Same format as editors. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

71 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

72 
//authors: [ 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

73 
// { name: "Your Name", url: "http://example.org/", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

74 
// company: "Your Company", companyURL: "http://example.com/" }, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

75 
//], 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

76 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

77 
// name of the WG 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

78 
wg: "W3C Web Applications (WebApps)", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

79 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

80 
// URI of the public WG page 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

81 
wgURI: "http://www.w3.org/2008/webapps/", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

82 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

83 
// name (with the @w3c.org) of the public mailing to which comments are due 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

84 
wgPublicList: "publicwebapps", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

85 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

86 
// URI of the patent status for this WG, for Rectrack documents 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

87 
// !!!! IMPORTANT !!!! 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

88 
// This is important for Rectrack documents, do not copy a patent URI from a random 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

89 
// document unless you know what you're doing. If in doubt ask your friendly neighbourhood 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

90 
// Team Contact. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

91 
wgPatentURI: "", 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

92 
}; 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

93 
</script> 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

94 

0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

95 
<! Styles to mimic File API spec > 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

96 
<! <style type="text/css"> > 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

97 
<! table.error { bordercollapse:collapse; borderstyle:hidden hidden none hidden } > 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

98 
<! table.error thead { borderbottom:solid } > 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

99 
<! table.error tbody th:firstchild { borderleft:solid } > 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

100 
<! table.error td, table th { borderleft:solid; borderright:solid; borderbottom:solid thin; verticalalign:top; padding:0.2em } > 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

101 
<! </style> > 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

102 

7
4a496b9c9944
fixed issue with resolving css file
fmoussa <feras.moussa@hotmail.com>
parents:
6
diff
changeset

103 
</head> 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

104 
<body> 
35  105 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

106 
<section id="sotd"> 
46
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

107 
<p> 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

108 
This document is not complete. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

109 
It is subject to major changes and, while early experimentations are encouraged, it is therefore not intended for implementation. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

110 
</p> 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

111 

d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

112 
<p> 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

113 
To check recent changes and rationale for them, please visit <a href="https://dvcs.w3.org/hg/streamsapi/">Mercurial history</a>. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

114 
Check open bugs at Bugzilla using <a href="https://www.w3.org/Bugs/Public/buglist.cgi?component=Streams%20API">this link</a>. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

115 
If you wish to submit a bug, please use <a href="https://www.w3.org/Bugs/Public/enter_bug.cgi?product=WebAppsWG&component=Streams%20API">this link</a>. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

116 
All comments and bug reports are welcome. 
d9d23bed8517
Add links to Bugzilla listing and entering UI.
Takeshi Yoshino <tyoshino@google.com>
parents:
45
diff
changeset

117 
</p> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

118 
</section> 
35  119 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

120 
<section id="abstract"> 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

121 
<p> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

122 
This specification provides an API for representing a byte stream in web applications, as well as programmatically reading and writing it. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

123 
This includes: 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

124 
</p> 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

125 
<ul> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

126 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

127 
An interface named <a>WritableStream</a> which defines a general protocol for data consuming APIs (<a href="#consumers">consumers</a>) to communicate with data producing code (<a href="#producers">producers</a>). 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

128 
</li> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

129 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

130 
An interface named <a>ReadableStream</a> which defines a general protocol for data producing APIs to communicate with data consuming code. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

131 
</li> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

132 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

133 
An interface named <a>ByteStream</a> which inherits both WritableStream and ReadableStream and represents a byte sequence. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

134 
</li> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

135 
<li> 
99
b3b8bbde934f
Teminology: Tuple > struct type
Takeshi Yoshino <tyoshino@google.com>
parents:
98
diff
changeset

136 
A struct type named <a>ByteStreamReadResult</a> which represents the result of consuming operations such as <code>read()</code> and <code>pipe()</code>. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

137 
It holds a chunk of content read from a <a>ReadableStream</a>, the number of bytes consumed, and EOF signal. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

138 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

139 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

140 
An enum <a>ByteStreamReadType</a> which represents data types as which data can be read from a <a>ReadableStream</a>. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

141 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

142 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

143 
A list of notable byte stream <a href="#producers">producers</a> and <a href="#consumers">consumers</a> for which we can apply either or both of <a>ReadableStream</a> and <a>WritableStream</a> model. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

144 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

145 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

146 
Extensions to <a href="http://dev.w3.org/2006/webapi/XMLHttpRequest2/#thexmlhttprequestinterface">XMLHttpRequest</a> [[!XMLHTTPREQUEST2]] to add support for uploading data via <a>WritableStream</a> and downloading a response as a <a>ReadableStream</a>. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

147 
</li> 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

148 
<li> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

149 
Extensions to <a href="http://dev.w3.org/2006/webapi/FileAPI/#dfncreateObjectURL">URL.createObjectURL</a> and 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

150 
<a href="http://dev.w3.org/2006/webapi/FileAPI/#dfnrevokeObjectURL">URL.revokeObjectURL</a> to add support for <a>ReadableStream</a>. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

151 
</li> 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

152 
</ul> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

153 

0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

154 
<p> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

155 
This API is designed to be used in conjunction with other APIs and elements on the web platform, notably: 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

156 
<a href="http://dev.w3.org/2006/webapi/FileAPI">File</a> [[!FILEAPI]], 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

157 
<a href="http://dev.w3.org/2006/webapi/XMLHttpRequest2">XMLHttpRequest</a> 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

158 
(e.g. with an overloaded <a href="http://dev.w3.org/2006/webapi/XMLHttpRequest2/#thesendmethod"><code>send()</code></a> method 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

159 
and <a href="http://dev.w3.org/2006/webapi/XMLHttpRequest2/#theresponsetypeattribute"><code>response</code></a> object for <a>ReadableStream</a> objects) [[!XMLHTTPREQUEST2]], 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

160 
<a href="http://dev.w3.org/html5/postmsg/#domwindowpostmessage"><code>postMessage</code></a>, and 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

161 
Web Workers [[!WEBWORKERS]]. 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

162 
</p> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

163 
</section> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

164 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

165 
<section id="introduction" class="section informative"> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

166 
<h2>Introduction</h2> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

167 

0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

168 
<p> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

169 
Web applications should have the ability to acquire, manipulate, and pass data in a wide variety of forms, including as a sequence of data made available over time. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

170 
This specification defines the basic representation for byte streams, and programmatic ways to read and write streams of data and errors raised on those operations. 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

171 
</p> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

172 

01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

173 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

174 
The <a>WritableStream</a> interface defines a general protocol for <a href="#consumers">data consuming APIs</a> to communicate with data producing code. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

175 
In these cases, the data consuming API, such as a decoder, provides a <a>WritableStream</a> for other applications to write to, enabling the decoder to begin decoding data as it becomes available. 
87
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

176 
The data is written to the internal data sink of a data consuming API using: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

177 
<ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

178 
<li>The <code>write()</code> method for writing bytes to the data sink as a <a>ArrayBufferView</a>, <a>DOMString</a> or <a>Blob</a></li> 
87
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

179 
<li> 
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

180 
The <code>awaitSpaceAvailable()</code> method for allowing a dataproducer to write to the data sink only when the data sink specifies it is now available to consume more data. 
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

181 
This is useful for cases where an app may want to avoid backpressure and filling the internal buffer. 
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

182 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

183 
</ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

184 
Actual transfer of bytes to the data sink may happen either synchronously or asynchronously. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

185 
<a>WritableStream</a> hides the details of actual communication with the data sink while allowing for an efficient transfer of bytes. 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

186 
</p> 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

187 

01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

188 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

189 
The <a>ReadableStream</a> interface defines a general protocol for <a href="#producers">data producing APIs</a> to communicate with data consuming code. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

190 
This interface represents the potential for an infinite amount of bytes which are obtained over time and read once. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

191 
Data consuming code reads data from the data source inside a data producing API using: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

192 
<ul> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

193 
<li>The <code>read()</code> and <code>readUpTo()</code> methods for reading bytes from the data source as a <a>ArrayBufferView</a>, <a>DOMString</a> or <a>Blob</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

194 
<li>The <code>pullAmount</code> attribute to pace data retrieval from the data source</li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

195 
<li>The <code>pipe()</code> method for transferring data in bulk from the data source into the data sink of a <a>WritableStream</a> from another API</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

196 
</ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

197 
Actual transfer of bytes from the data source may happen either synchronously or asynchronously. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

198 
The <a>ReadableStream</a> hides the details of actual communication with the data source while allowing for an efficient transfer of bytes. 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

199 
</p> 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

200 

01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

201 
<p> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

202 
With the combination of the following features, this interface suite responds to various simple and complex needs of byte stream handling. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

203 
<ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

204 
<li>Delayed notification of completion by using <a>Promise</a>s</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

205 
<li>Explicit back pressure management by propagating room for consumption back to producers</li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

206 
<li><a>WritableStream</a> always accepts incoming data synchronously</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

207 
</ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

208 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

209 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

210 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

211 
The <a>ByteStream</a> is a simple implementation of both the <a>WritableStream</a> and <a>ReadableStream</a> interface. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

212 
A ByteStream has a single queue of bytes and it works as a data sink for the WritableStream interface and as a data source for the ReadableStream interface. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

213 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

214 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

215 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

216 
Read and write operations on these interfaces are implemented using <a>Promise</a>. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

217 
When an operation completes, the Promise returned by a method will be fulfilled, and then the fulfill callback set to the Promise will handle the result. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

218 
Error conditions that may arise during an operation will be handled by the reject callback set to the Promise. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

219 
An example will be illustrative. 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

220 
</p> 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

221 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

222 
<p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

223 
In the example below, different code blocks handle progress, error, and success conditions. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

224 
The example demonstrates how to read a chunk of data from a <a>ReadableStream</a> using <code>read()</code>. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

225 
The <a>ReadableStream</a> may of come from a <a href="#producers">producer</a> such as <code>XMLHttpRequest</code>. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

226 
Additionally, it demonstrates how to read bytes from a <a>ReadableStream</a> until an EOF is encountered. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

227 
</p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

228 

77  229 
<pre class="example"> 
230 
// Tell stream that we're ready to consume 1024 bytes. 

231 
stream.pullAmount = 1024; 

24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

232 
stream.readEncoding = "UTF8"; 
121  233 
stream.readBinaryAs = "arraybuffer"; 
77  234 
stream.read().then( 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

235 
function (result) { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

236 
// Process data 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

237 
}, 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

238 
function (error) { 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

239 
// Handle error 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

240 
});</pre> 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

241 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

242 
<pre class="example">// Read data from the ReadableStream repeatedly 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

243 
function readUntilEof() { 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

244 
stream.read().then( 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

245 
function (result) { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

246 
processData(result.data); 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

247 

24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

248 
if (!result.eof) { 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

249 
readUntilEof(); 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

250 
} 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

251 
}, 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

252 
function (error) { 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

253 
// Handle error 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

254 
}); 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

255 
} 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

256 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

257 
readUntilEof();</pre> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

258 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

259 
<p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

260 
In the example below, different code blocks handle progress, error, and success conditions. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

261 
The example below demonstrates how to obtain a <a>ReadableStream</a> from <a>XMLHttpRequest</a> to begin playing a large video in <code>readystate</code> LOADING. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

262 
The example takes the <a>ReadableStream</a> from a <a href="#producers">producer</a>, <a>XMLHttpRequest</a>, and gives it to a <a href="#consumers">consumer</a>, the video tag. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

263 
</p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

264 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

265 
<pre class="example">function handler() { 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

266 
if(this.readyState == this.LOADING) { 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

267 
var theStream = this.response; 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

268 
var streamURL = URL.createObjectURL(theStream); 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

269 
document.getElementById("myVideoTag").src = streamURL; 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

270 
} 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

271 
} 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

272 

af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

273 
var client = new XMLHttpRequest(); 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

274 
client.onreadystatechange = handler; 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

275 
client.setRequestHeader('customHeader', 'value'); 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

276 
client.setRequestHeader('customHeader2', 'value2'); 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

277 
client.open("GET", "myvideo.h264"); 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

278 
client.responseType = "stream"; 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

279 
client.send();</pre> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

280 

0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

281 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

282 
In addition to the <a>ReadableStream</a> interface, this specification introduces an interface called <a>WritableStream</a> for data consuming APIs. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

283 
The <a>WritableStream</a> interface provides a <code>write()</code> method which allows applications to write data to a <a href="#consumers">data consuming API</a>. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

284 
<code>write()</code> supports writing bytes represented as a <a>Blob</a>, <a>ArrayBuffer</a>, or <a>DOMString</a>. 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

285 
</p> 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

286 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

287 
The example below demonstrates how to use <code>write()</code> to load a <a>ReadableStream</a> into the audio tag, whose data could be processed and built dynamically at read time. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

288 
ByteStream in the example is a class which implements both <a>WritableStream</a> and <a>ReadableStream</a>. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

289 
It accepts bytes generated by the code via <a>WritableStream</a> methods, and the written data will be consumed by the audio element via the object URL which is a part of <a>ReadableStream</a>'s functionality. 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

290 
</p> 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

291 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

292 
<pre class="example">var stream = new ByteStream("audio/mp3"); 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

293 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

294 
function writeData() { 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

295 
// Do work to create more data to place into the stream 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

296 
var data = generateMusic(); 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

297 

01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

298 
// If we have no more data to process and place in the stream, we close 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

299 
if (moreData == null){ 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

300 
stream.writeClose(); 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

301 
} else{ 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

302 
// Wait until write() completes. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

303 
stream.write(data).then( 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

304 
function () { 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

305 
writeData(); 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

306 
}, 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

307 
function (error) { 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

308 
// Handle error 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

309 
} 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

310 
); 
0
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

311 
} 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

312 
} 
af7713ef49dc
Adding Editors Draft
eliotgra@ELIOTGRAX220.redmond.corp.microsoft.com
parents:
diff
changeset

313 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

314 
var streamURL = URL.createObjectURL(stream); 
8
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

315 
document.getElementById('audioTag').src = streamURL; 
cb4e62ad9587
Switching to respec version
fmoussa <feras.moussa@hotmail.com>
parents:
7
diff
changeset

316 

24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

317 
writeData();</pre> 
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

318 

01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

319 
<p> 
87
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

320 
A producer can also do work only when pulled by using <code>awaitSpaceAvailable()</code>, which will inform the producer when to produce data. 
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

321 
This is useful when highperformance is necessary. 
24
01eb488cd8c4
Complete update of streams spec to support promises and further refinements
fmoussa <feras.moussa@hotmail.com>
parents:
23
diff
changeset

322 
</p> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

323 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

324 
<pre class="example">function poll() { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

325 
stream.awaitSpaceAvailable().then( 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

326 
function (pulledAmount) { 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

327 
stream.write(generateRandomBytes(pulledAmount)); 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

328 
poll(); 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

329 
} 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

330 
); 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

331 
} 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

332 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

333 
poll();</pre> 
113
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

334 

b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

335 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

336 
When X bytes are loaded and passed to the Promise, the ReadableStream marks X bytes used in pullAmount. 
113
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

337 
The next <code>read()</code> call automatically clears the mask to request the producer to produce X more bytes. 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

338 
If precise flow control is needed, you update pullAmount before the next <code>read()</code>. 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

339 
In the example below, the producer is requested to produce 16 bytes, and then in the fulfill callback, pullAmount is set to the remaining number of bytes not to request more. 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

340 
</p> 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

341 

b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

342 
<pre class="example">stream.pullAmount = 16; 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

343 
function read() { 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

344 
stream.read().then( 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

345 
function (result) { 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

346 
process(result); 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

347 
stream.pullAmount = result.size; 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

348 
if (stream.pullAmount == 0) { 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

349 
// Done 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

350 
} else if (stream.eof) { 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

351 
// Done 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

352 
} else { 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

353 
read(); 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

354 
} 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

355 
} 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

356 
); 
b6a7ebb05e6b
Add pullAmount precise flow control example
Takeshi Yoshino <tyoshino@google.com>
parents:
112
diff
changeset

357 
}</pre> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

358 
</section> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

359 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

360 
<section class="section" id="writableByteStream"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

361 
<h2>WritableStream Interface</h2> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

362 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

363 
The WritableStream interface defines a protocol for APIs which consume byte streams. 
87
dcf26e7c77fe
Break at the end of each sentence.
Takeshi Yoshino <tyoshino@google.com>
parents:
86
diff
changeset

364 
The protocol includes: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

365 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

366 
<li>How to receive the byte stream</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

367 
<li>How to notify the writer of completion of writing</li> 
77  368 
<li>How to notify the writer of how much data can be accepted currently</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

369 
</ol> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

370 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

371 
By returning a <a>Promise</a> and delaying fulfillment of it, the WritableStream realizes flow control. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

372 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

373 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

374 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

375 
The actual data consumer behind the WritableStream is called a data sink and is identified by <dfn>dataSink</dfn>. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

376 
A data sink consumes byte streams and notifies the WritableStream of the number of bytes the data sink can newly accept. 
109
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

377 
For each data sink, it's defined how to calculate <a>cost</a> of each object which the data sink can consume. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

378 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

379 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

380 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

381 
A WritableStream has a onetoone mapping with the associated data sink, and has defined semantics for <a href='#interactingWithDataSink'>interacting with the data sink internally</a>. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

382 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

383 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

384 
<section class="section"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

385 
<h3>WritableStream interface</h3> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

386 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

387 
<dl class="idl" title="interface WritableStream"> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

388 
<dt>attribute DOMString writeEncoding</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

389 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

390 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

391 
Specifies a <a>DOMString</a> that represents the label of an encoding [[!EncodingDetermination]]. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

392 
If set, it will be used as part of the encoding determination used when processing a <a>DOMString</a> provided in a <code>write()</code> method call. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

393 
It will return the label last set, or the empty DOMString if never set. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

394 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

395 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

396 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

397 
This parameter is not designed to be specified as an argument of write() since it's not likely to be changed frequently. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

398 
</section> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

399 
</dd> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

400 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

401 
<dt>Promise&lt;unsigned long long> write()</dt> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

402 
<dd> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

403 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

404 
This method writes the specified <var>data</var> to the WritableStream. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

405 
</p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

406 

85
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

407 
<section class="note"> 
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

408 
<p> 
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

409 
write() returns a Promise to make it easy for byte stream producing code to react to backpressure. 
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

410 
</p> 
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

411 
</section> 
885937bdcc17
Fix bug24021. Typo in process pendingWriteQueue
Takeshi Yoshino <tyoshino@google.com>
parents:
84
diff
changeset

412 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

413 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

414 
This method must run the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

415 
<ol> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

416 
<li>Let <var>latchedEncoding</var> be the current value of <a href="#widlWritableStreamwriteEncoding">writeEncoding</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

417 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

418 
<li><a>Abort wait</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

419 

115  420 
<li>If <var>cost</var> argument is specified, let <var>amountToWrite</var> be <var>cost</var> argument. Otherwise, let <var>amountToWrite</var> be the <a>cost</a> of <var>data</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

421 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

422 
<li>Let <var>writePromise</var> be a new <a>Promise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

423 

98
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

424 
<li>Let <var>pendingWrite</var> be a new <a>PendingWriteDescriptor</a></li> 
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

425 
<li>Set <var>pendingWrite.promise</var> to <var>writePromise</var></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

426 
<li>Set <var>pendingWrite.amount</var> to <var>amountToWrite</var></li> 
98
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

427 
<li>Push <var>pendingWrite</var> to <a>pendingWriteQueue</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

428 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

429 
<li><a>Process pendingWriteQueue</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

430 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

431 
<li>Return <var>writePromise</var>, and then continue to process the steps in this algorithm</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

432 

109
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

433 
<li> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

434 
<dl class="switch"> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

435 
<dt>If <var>data</var> is a <a>DOMString</a></dt> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

436 
<dd> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

437 
Write <var>data</var> to <a>dataSink</a> together with <var>latchedEncoding</var> as <var>encoding</var> parameter. 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

438 
Interpretation of <var>latchedEncoding</var> is up to <a>dataSink</a>. 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

439 
</dd> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

440 
<dt>Otherwise</dt> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

441 
<dd> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

442 
Write <var>data</var> to <a>dataSink</a>. 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

443 
</dd> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

444 
</dl> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

445 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

446 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

447 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

448 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

449 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

450 
If <var>data</var> argument is an <a>ArrayBufferView</a>, modifications made on the ArrayBufferView's contents between <code>write()</code> method call and fulfill of the returned Promise may affect the data written to <a>dataSink</a>. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

451 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

452 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

453 
<dl class="parameters"> 
111
f3c425cc88db
write accepts any data
Takeshi Yoshino <tyoshino@google.com>
parents:
110
diff
changeset

454 
<dt>any data</dt> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

455 
<dd>Data to write.</dd> 
115  456 
<dt>optional [Clamp] unsigned long long cost</dt> 
457 
<dd>Overrides <a>cost</a> of data.</dd> 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

458 
</dl> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

459 
</dd> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

460 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

461 
<dt>Promise&lt;unsigned long long> awaitSpaceAvailable()</dt> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

462 
<dd> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

463 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

464 
This method waits until the WritableStream becomes able to accept any nonzero amount of data. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

465 
The returned <a>Promise</a> will be fulfilled with the number of bytes the WritableStream can accept. 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

466 
</p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

467 

0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

468 
<p> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

469 
This method must run the steps below: 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

470 
<ol> 
110
6a7a40bde1e5
Abort wait > abort waiting
Takeshi Yoshino <tyoshino@google.com>
parents:
109
diff
changeset

471 
<li><a>Abort waiting</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

472 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

473 
<li>Set <a>waitPromise</a> to a new <a>Promise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

474 
<li>Return <a>waitPromise</a>, and then continue to process the steps in this algorithm</li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

475 
<li>Wait until <a>pendingWriteQueue</a> is empty and <a>spaceAvailable</a> is not 0</li> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

476 
<li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

477 
Queue a task to run the steps below: 
38
3cdd8b2d21d9
Merging changes made for preparing WD
Takeshi Yoshino <tyoshino@google.com>
parents:
37
diff
changeset

478 
<ol> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

479 
<li>If <a>waitPromise</a> is <code>null</code>, terminate these steps</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

480 
<li>Let <var>detachedWaitPromise</var> be <a>waitPromise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

481 
<li>Set <a>waitPromise</a> to <code>null</code></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

482 
<li>Fulfill <var>detachedWaitPromise</var> with <a>spaceAvailable</a></li> 
38
3cdd8b2d21d9
Merging changes made for preparing WD
Takeshi Yoshino <tyoshino@google.com>
parents:
37
diff
changeset

483 
</ol> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

484 
</li> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

485 
</ol> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

486 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

487 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

488 

103
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

489 
<dt>Promise&lt;undefined> writeClose()</dt> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

490 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

491 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

492 
This method tells the WritableStream that no more data will be written to it. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

493 
Once writeClose() has been called on a WritableStream, no further method calls can be made on the WritableStream. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

494 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

495 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

496 
<p> 
103
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

497 
This method must run the steps below: 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

498 
<ol> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

499 
<li>Let <var>closePromise</var> be a new <a>Promise</a></li> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

500 
<li>Return <var>closePromise</var>, and then continue the process the steps in this algorithm</li> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

501 
<li>Write the EOF to <a>dataSink</a></li> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

502 
<li>Wait until <a>dataSink</a> acknowledges the EOF</li> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

503 
<li>Fulfill <var>closePromise</var> with <code>undefined</code></li> 
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

504 
</ol> 
37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

505 
</p> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

506 
</dd> 
116  507 

118  508 
<dt>Promise&lt;undefined> writeAbort(optional any reason)</dt> 
116  509 
<dd> 
510 
<p> 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

511 
This method tells the WritableStream that no more data will be written to it with indication of error. 
116  512 
The details of the error will be given by <var>reason</var> argument. 
513 
The interpretation of <var>reason</var> is up to <a>dataSink</a>. 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

514 
Once writeAbort() has been called on a WritableStream, no further method calls can be made on the WritableStream. 
116  515 
</p> 
516 

517 
<p> 

518 
This method must run the steps below: 

519 
<ol> 

520 
<li>Let <var>abortPromise</var> be a new <a>Promise</a></li> 

521 
<li>Return <var>abortPromise</var>, and then continue the process the steps in this algorithm</li> 

522 
<li><a>Writeabort</a> <a>dataSink</a> with <var>reason</var></li> 

523 
<li>Wait until <a>dataSink</a> acknowledges the writeabort</li> 

524 
<li>Fulfill <var>abortPromise</var> with <code>undefined</code></li> 

525 
</ol> 

526 
</p> 

527 
</dd> 

37
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

528 
</dl> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

529 
</section> 
0de575d7b79a
 Unify indentation to tabs.
Takeshi Yoshino <tyoshino@google.com>
parents:
35
diff
changeset

530 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

531 
<section class="section"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

532 
<h2>Data sink model</h2> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

533 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

534 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

535 
The data sink is the underlying mechanism which a <a>WritableStream</a> interacts with and stores its data in. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

536 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

537 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

538 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

539 
A data sink to which the <a>WritableStream</a> interface writes bytes can be anything which: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

540 
<ol> 
109
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

541 
<li> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

542 
Accepts data possibly together with a <a>DOMString</a> parameter named <var>encoding</var> indicating in what encoding the data must be interpreted. 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

543 
</li> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

544 
<li> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

545 
Accepts the EOF signal 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

546 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

547 
<li> 
116  548 
Accepts the writeabort signal with an object parameter named reason. 
549 
</li> 

550 
<li> 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

551 
Notifies <a>WritableStream</a> of how much data the data sink can newly accept. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

552 
When and how to generate such notifications is up to data sinks. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

553 
Data sinks must be able to accept data more than it notified <a>WritableStream</a> of. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

554 
</li> 
103
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

555 
<li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

556 
Notifies <a>WritableStream</a> of that the data sink is gone. 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

557 
This signal may mean an error. 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

558 
If it means an error, an object indicating the details of the error is attached. 
116  559 
</li> 
560 
<li> 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

561 
Notifies <a>WritableStream</a> of acknowledgement of the writeabort signal with error detail object. 
103
56c80502bb30
Change writeClose() return type to Promise
Takeshi Yoshino <tyoshino@google.com>
parents:
102
diff
changeset

562 
</li> 
109
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

563 
<li> 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

564 
How to calculate an integer value <dfn>cost</dfn> of each object which the data sink can consume. 
44cada6acb2f
Make write() agnostic to data type
Takeshi Yoshino <tyoshino@google.com>
parents:
108
diff
changeset

565 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

566 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

567 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

568 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

569 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

570 
<section class="section" id='interactingWithDataSink'> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

571 
<h2>Interacting with the data sink</h2> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

572 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

573 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

574 
This section defines the internal mechanisms for how the WritableStream interacts with <a>dataSink</a>. 
93
33fa9ecdbe74
A bit tweak on data sink definition
Takeshi Yoshino <tyoshino@google.com>
parents:
92
diff
changeset

575 
This section specifies both the internal properties as well as the algorithms. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

576 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

577 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

578 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

579 
A WritableStream has an associated integer variable <dfn>spaceAvailable</dfn> which holds the number of bytes that <a>dataSink</a> requested but not yet written to it. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

580 
This variable is initialized to 0 on construction. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

581 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

582 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

583 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

584 
A WritableStream has an associated <a>Promise</a> <dfn>waitPromise</dfn> which is used by the <code>awaitSpaceAvailable()</code> method. 
93
33fa9ecdbe74
A bit tweak on data sink definition
Takeshi Yoshino <tyoshino@google.com>
parents:
92
diff
changeset

585 
This variable is initialized to <code>null</code> on construction. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

586 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

587 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

588 
<p> 
110
6a7a40bde1e5
Abort wait > abort waiting
Takeshi Yoshino <tyoshino@google.com>
parents:
109
diff
changeset

589 
To <dfn>abort waiting</dfn>, run the steps below: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

590 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

591 
<li>If <a>waitPromise</a> is <code>null</code>, terminate these steps</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

592 
<li>Let <var>detachedWaitPromise</var> be <a>waitPromise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

593 
<li>Set <a>waitPromise</a> to <code>null</code></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

594 
<li>Reject <var>detachedWaitPromise</var> with an "<code><a>AbortError</a></code>"</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

595 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

596 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

597 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

598 
<p> 
94
e06bf08768db
Formatting data sink definition
Takeshi Yoshino <tyoshino@google.com>
parents:
93
diff
changeset

599 
A struct type <dfn>PendingWriteDescriptor</dfn> has the following members: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

600 
<ul> 
91
3ed9f08a1f23
Renames for readability
Takeshi Yoshino <tyoshino@google.com>
parents:
90
diff
changeset

601 
<li>A <a>Promise</a> <var>promise</var></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

602 
<li>An integer <var>amount</var></li> 
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

603 
<li>An integer <var>ackedAmount</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

604 
</ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

605 
</p> 
94
e06bf08768db
Formatting data sink definition
Takeshi Yoshino <tyoshino@google.com>
parents:
93
diff
changeset

606 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

607 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

608 
A WritableStream has an associated queue <dfn>pendingWriteQueue</dfn> which holds <a>PendingWriteDescriptor</a>s. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

609 
This queue is initialized to an empty queue on construction. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

610 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

611 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

612 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

613 
To <dfn>process pendingWriteQueue</dfn>, repeat the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

614 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

615 
<li>If <a>pendingWriteQueue</a> is empty, break from this loop</li> 
91
3ed9f08a1f23
Renames for readability
Takeshi Yoshino <tyoshino@google.com>
parents:
90
diff
changeset

616 
<li>Let <var>pendingWrite</var> be the head element of <a>pendingWriteQueue</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

617 
<li> 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

618 
<dl class="switch"> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

619 
<dt>If <a>sinkGone</a> is set</dt> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

620 
<dd>Run the steps below: 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

621 
<ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

622 
<li>Pop <var>pendingWrite</var> from <a>pendingWriteQueue</a>, and then</li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

623 
<li>If <var>pendingWrite.promise</var> is not <code>null</code>, reject it with <a>sinkErrorDetail</a></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

624 
</ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

625 
</dd> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

626 
<dt>Otherwise</dt> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

627 
<dd>Run the steps below: 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

628 
<ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

629 
<li>Let <var>amountToAcknowledge</var> be min(<var>pendingWrite.amount</var>  <var>pendingWrite.ackedAmount</var>, <a>spaceAvailable</a>)</li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

630 
<li>Set <a>spaceAvailable</a> to <a>spaceAvailable</a>  <var>amountToAcknowledge</var></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

631 
<li>Set <var>pendingWrite.ackedAmount</var> to <var>pendingWrite.ackedAmount</var> + <var>amountToAcknowledge</var></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

632 
<li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

633 
If <var>pendingWrite.ackedAmount</var> equals to <var>pendingWrite.amount</var>, run the steps below: 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

634 
<ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

635 
<li>Pop <var>pendingWrite</var> from <a>pendingWriteQueue</a></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

636 
<li>If <var>pendingWrite.promise</var> is not <code>null</code>, fulfill it with <var>pendingWrite.amount</var></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

637 
</ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

638 
</li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

639 
</ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

640 
</dd> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

641 
</dl> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

642 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

643 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

644 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

645 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

646 
<p> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

647 
When <a>dataSink</a> requests <var>amountNewlyRequested</var> more data, queue a task which runs the steps below: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

648 
<ol> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

649 
<li>Set <a>spaceAvailable</a> to <a>spaceAvailable</a> + <var>amountNewlyRequested</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

650 
<li><a>Process pendingWriteQueue</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

651 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

652 
</p> 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

653 

218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

654 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

655 
A WritableStream has an associated flag <dfn>sinkGone</dfn> which is set when the data sink is gone. 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

656 
</p> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

657 

218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

658 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

659 
A WritableStream has an associated object <dfn>sinkErrorDetail</dfn> which is initialized to null, and when the data sink is gone, set to the error detail object. 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

660 
</p> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

661 

218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

662 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

663 
When <a>dataSink</a> notifies the WritableStream of that the data sink is gone, queue a task which runs the steps below: 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

664 
<ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

665 
<li>Set <a>sinkGone</a></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

666 
<li>Set <a>sinkErrorDetail</a> to the error detail object</li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

667 
<li><a>Process pendingWriteQueue</a></li> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

668 
</ol> 
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

669 
</p> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

670 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

671 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

672 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

673 
<section class="section" id="readableByteStream"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

674 
<h2>ReadableStream Interface</h2> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

675 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

676 
The ReadableStream interface defines a protocol for APIs which produce a byte stream. This protocol includes: 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

677 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

678 
<li>How to receive a read request from the reader and output bytes</li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

679 
<li>How to transfer data in bulk to another <a>WritableStream</a> (by using the <code>pipe()</code> method)</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

680 
<li>How to mirror data to multiple destinations (by using the <code>fork()</code>)</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

681 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

682 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

683 
By returning a <a>Promise</a> and delaying fulfillment of it, the ReadableStream realizes asynchronous data consumption. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

684 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

685 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

686 
<p> 
77  687 
Interfaces introduced in this section provide simple and convenient ways to consume data. 
688 
They connect arbitrary byte stream producer and byte stream consuming JavaScript code using Promises and method invocations. 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

689 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

690 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

691 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

692 
A ReadableStream has a onetoone mapping with an associated data source, and has defined semantics for <a href='#interactingWithDataSource'>interacting with the data source internally</a>. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

693 
A data source, however, can have a onetomany relationship with ReadableStream, in cases where <code>fork()</code> is used. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

694 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

695 

77  696 
<section class="section" id="readableByteStreamInterface"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

697 
<h3>ReadableStream interface</h3> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

698 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

699 
<dl class="idl" title="interface ReadableStream"> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

700 
<dt>readonly attribute DOMString type</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

701 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

702 
Returns the ASCIIencoded string in lower case representing the media type of the <code>Stream</code>, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

703 
expressed as an RFC2046 MIME type [[!RFC2046]]. 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

704 
Conforming user agents SHOULD return the MIME type of the <code>ReadableStream</code>, if it is known. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

705 
If conforming user agents cannot determine the media type of the <code>ReadableStream</code>, they MUST return the empty string. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

706 
A string is a valid MIME type if it matches the mediatype token defined in section 3.7 "Media Types" of RFC 2616 [[!HTTP11]]. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

707 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

708 

121  709 
<dt>attribute ByteStreamReadType readBinaryAs</dt> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

710 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

711 
<p> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

712 
Specifies what data type will be returned by a <code>read()</code> and <code>readUpTo()</code> method call. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

713 
This attribute can be set to any of the supported types in <a>ByteStreamReadType</a>. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

714 
The default value for this attribute is "<code>arraybuffer</code>". 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

715 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

716 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

717 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

718 
<dt>attribute DOMString readEncoding</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

719 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

720 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

721 
Specifies a <a>DOMString</a> that represents the label of an encoding [[!EncodingDetermination]]. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

722 
If set, it will be used as part of the encoding determination used when processing a <code>read()</code> method call. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

723 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

724 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

725 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

726 
This parameter is not designed to be specified as an argument of <code>read()</code> since it's not likely to be changed frequently. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

727 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

728 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

729 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

730 
<dt>attribute unsigned long long pullAmount</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

731 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

732 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

733 
This attribute provides ReadableStream with a hint of how much data the reader can consume currently. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

734 
Each implementation of ReadableStream must initialize the value of pullAmount on construction. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

735 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

736 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

737 
<p> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

738 
When this attribute is set, <a>retrieve data</a>. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

739 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

740 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

741 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

742 
This flow control functionality is provided as a separated attribute rather than as an argument of the read() method based on the assumption that this value is not changed frequently. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

743 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

744 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

745 
It's possible that the number of bytes received by <code>read()</code> is more than the pullAmount value. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

746 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

747 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

748 

114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

749 
<dt>Promise&lt;ByteStreamReadResult> readUpTo()</dt> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

750 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

751 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

752 
This method reads data from the ReadableStream. 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

753 
The returned <a>Promise</a> is fulfilled only when the total cost of produced data becomes equal to or greater than the specified <a>cost</a> or the EOF is reached. 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

754 
The cost of data returned by this method is the same or less than the specified <var>size</var> argument. 
121  755 
The cost of data returned by this method can be less than <var>size</var> when data cannot be fully converted into the type specified by <code>readBinaryAs</code> or an EOF was reached. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

756 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

757 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

758 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

759 
This method must run the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

760 
<ol> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

761 
<li>If <a href="#widlReadableStreamreadBinaryAs">readBinaryAs</a> is "<code>text</code>" throw a "<code><a>SyntaxError</a></code>"</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

762 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

763 
<li>If <a>readPending</a> is set, throw an "<code><a>InvalidStateError</a></code>"</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

764 
<li>Set <a>readPending</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

765 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

766 
<li>Let <var>latchedType</var> be the current value of <a href="#widlReadableStreamreadBinaryAs">readBinaryAs</a></li> 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

767 
<li>Let <var>latchedEncoding</var> be the current value of <a href="#widlReadableStreamreadEncoding">readEncoding</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

768 

114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

769 
<li>Set <a>readUpToPullAmount</a> to <var>size</var></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

770 
<li>Set <a>amountBeingReturned</a> to 0</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

771 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

772 
<li><a>Retrieve data</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

773 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

774 
<li>Let <var>readPromise</var> be a new <a>Promise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

775 
<li>Return <var>readPromise</var>, and then continue to process the steps in this algorithm</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

776 

114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

777 
<li>Wait until the total cost of data in <a>readDataBuffer</a> becomes equal to or greater than <var>size</var> or <a>eofReached</a> is set</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

778 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

779 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

780 
Queue a task which runs the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

781 
<ol> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

782 
<li>Let <var>readableAmount</var> be the total cost of data in <a>readDataBuffer</a></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

783 
<li>Let <var>maxAmountToConsume</var> be min(<var>size</var>, <var>readableAmount</var>)</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

784 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

785 
<li>Let <var>result</var> be a new <a>ByteStreamReadResult</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

786 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

787 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

788 
<dt>If <var>latchedType</var> is "<code>none</code>"</dt> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

789 
<dd> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

790 
<ol> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

791 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultdata">data</a> to <code>undefined</code></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

792 
<li>Pop data from <a>readDataBuffer</a> as much as possible but up to <var>maxAmountToConsume</var></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

793 
</ol> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

794 
</dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

795 
<dt>Otherwise</dt> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

796 
<dd> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

797 
<ol> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

798 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultdata">data</a> to an object of the type specified by <var>latchedType</var> that can be created by consuming as much data as possible from <a>readDataBuffer</a> but up to <var>maxAmountToConsume</var></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

799 
<li>Pop the consumed data from <a>readDataBuffer</a></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

800 
</dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

801 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

802 
</li> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

803 
<li>Let <var>amountConsumed</var> be the total cost of data consumed in the last step</li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

804 
<li>Set <a href="#widlByteStreamReadResultamountConsumed">amountConsumed</a> of <var>result</var> to <var>amountConsumed</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

805 
<li>Set <a href="#widlByteStreamReadResulteof">eof</a> of <var>result</var> to <code>true</code> if <a>readDataBuffer</a> is empty and <a>eofReached</a> is set</li> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

806 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResulterror">error</a> to <a>sourceErrorDetail</a></li> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

807 

6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

808 
<li>Set <a>amountBeingReturned</a> to <var>amountConsumed</var></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

809 

6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

810 
<li>Set <a>readUpToPullAmount</a> to 0</li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

811 

6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

812 
<li>Unset <a>readPending</a></li> 
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

813 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

814 
<li>Fulfill <var>readPromise</var> with <var>result</var></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

815 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

816 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

817 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

818 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

819 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

820 
<dl class="parameters"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

821 
<dt>[Clamp] unsigned long long size</dt> 
114
6cd4d6696cb8
Change readExact to readUpTo and make it able to handle nonbyte type data
Takeshi Yoshino <tyoshino@google.com>
parents:
113
diff
changeset

822 
<dd>Max number of bytes to read.</dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

823 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

824 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

825 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

826 
This method is useful if 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

827 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

828 
<li>You don't want to get notified of new data unless bytes of the specified number become available.</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

829 
<li>You don't want to get your data fragmented into multiple parts, thus avoiding the need to buffer and combine chunks yourself.</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

830 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

831 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

832 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

833 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

834 
<dt>Promise&lt;ByteStreamReadResult> read()</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

835 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

836 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

837 
This method reads data from the ReadableStream. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

838 
The speed of reading can be roughly adjusted by using <a href="#widlByteStreamReadResultpullAmount">pullAmount</a>. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

839 
pullAmount doesn't necessarily limit the size of data being read by this method. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

840 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

841 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

842 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

843 
This method must run the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

844 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

845 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

846 
<li>If <a>readPending</a> is set, throw an "<code><a>InvalidStateError</a></code>"</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

847 
<li>Set <a>readPending</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

848 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

849 
<li>Let <var>latchedType</var> be the current value of <a href="#widlReadableStreamreadBinaryAs">readBinaryAs</a> attribute</li> 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

850 
<li>Let <var>latchedEncoding</var> be the current value of <a href="#widlReadableStreamreadEncoding">readEncoding</a> attribute</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

851 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

852 
<li>Set <a>amountBeingReturned</a> to 0</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

853 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

854 
<li><a>Retrieve data</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

855 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

856 
<li>Let <var>readPromise</var> be a new <a>Promise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

857 
<li>Return <var>readPromise</var>, and then continue to process the steps in this algorithm</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

858 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

859 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

860 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

861 
<dt>If <var>latchedType</var> is "<code>text</code>"</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

862 
<dd> 
121  863 
Wait until any of the following conditions is met, and then run the steps for the condition: 
864 
<dl class="switch"> 

865 
<dt>All or part of bytes in <a>readDataBuffer</a> can be converted into a nonempty <a>DOMString</a> when decoded using <var>latchedEncoding</var></dt> 

866 
<dd> 

867 
<ol> 

868 
<li>Pop the bytes from <a>readDataBuffer</a></li> 

869 
<li>Let <var>amountConsumed</var> be the number of the popped bytes</li> 

870 
<li>Let <var>readData</var> be the result of decoding</li> 

871 
</ol> 

872 
</dd> 

873 
<dt>It's clear decoding bytes in <a>readDataBuffer</a> using <var>latchedEncoding</var> fails regardless bytes to be retrieved in the future are</dt> 

874 
<dd> 

875 
<ol> 

876 
<li>Reject <var>readPromise</var> with an "<code><a>InvalidStateError</a></code>"</li> 

877 
<li>Terminate these steps</li> 

878 
</ol> 

879 
</dd> 

880 
<dt>Anything that doesn't represent bytes in <a>readDataBuffer</a> is encountered</dt> 

881 
<dd> 

882 
<ol> 

883 
<li>Reject <var>readPromise</var> with an "<code><a>InvalidStateError</a></code>"</li> 

884 
<li>Terminate these steps</li> 

885 
</ol> 

886 
</dd> 

887 
</dl> 

888 
</dd> 

889 
<dt>If <var>latchedType</var> is "<code>arraybuffer</code>" or "<code>blob</code>"</dt> 

890 
<dd> 

891 
Wait until any of the following conditions is met, and then run the steps for the condition: 

892 
<dl class="switch"> 

893 
<dt>There're nonzero number of bytes in <a>readDataBuffer</a></dt> 

894 
<dd> 

895 
<ol> 

896 
<li> 

897 
Pop the bytes from <a>readDataBuffer</a>, and then let <var>readBytes</var> be the popped bytes 

898 
<section class="note"> 

899 
Implementations may choose to pop only part of bytes readable if it helps reducing memory copy. 

900 
</section> 

901 
</li> 

902 
<li>Let <var>readData</var> be an object of the type specified by <var>latchedType</var> which represents <var>readBytes</var></li> 

903 
<li>Let <var>amountConsumed</var> be the number of the popped bytes</li> 

904 
</ol> 

905 
</dd> 

906 
<dt>Anything that doesn't represent bytes in <a>readDataBuffer</a> is encountered</dt> 

907 
<dd> 

908 
<ol> 

909 
<li>Reject <var>readPromise</var> with an "<code><a>InvalidStateError</a></code>"</li> 

910 
<li>Terminate these steps</li> 

911 
</ol> 

912 
</dd> 

913 
</dl> 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

914 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

915 
<dt>Otherwise</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

916 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

917 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

918 
<li>Wait until <a>readDataBuffer</a> becomes nonempty or <a>eofReached</a> is set</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

919 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

920 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

921 
<dt>If <var>latchedType</var> is "<code>none</code>"</dt> 
121  922 
<dd> 
923 
<ol> 

924 
<li>Pop data from <a>readDataBuffer</a></li> 

925 
<li>Let <var>readData</var> be <code>undefined</code></li> 

926 
</ol> 

927 
</dd> 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

928 
<dt>Otherwise</dt> 
121  929 
<dd> 
930 
<ol> 

931 
<li>Pop data from <a>readDataBuffer</a></li> 

932 
<li>Let <var>readData</var> be an object representing the data</li> 

933 
<li>Let <var>amountConsumed</var> be the <a>cost</a> of the data</li> 

934 
</ol> 

935 
</dd> 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

936 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

937 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

938 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

939 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

940 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

941 
</li> 
121  942 

943 
<li>Queue a task which runs the rest of this algorithm</li> 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

944 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

945 
<li>Let <var>result</var> be a new <a>ByteStreamReadResult</a>.</li> 
106
4b349a87fc7c
More foo of bar > bar.foo clean up
Takeshi Yoshino <tyoshino@google.com>
parents:
105
diff
changeset

946 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultdata">data</a> to <var>readData</var></li> 
4b349a87fc7c
More foo of bar > bar.foo clean up
Takeshi Yoshino <tyoshino@google.com>
parents:
105
diff
changeset

947 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResulteof">eof</a> to <code>true</code> if <a>eofReached</a> is set and <a>readDataBuffer</a> is empty</li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

948 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultamountConsumed">amountConsumed</a> to <var>amountConsumed</var></li> 
119
218f3b3a2df5
Add how to notify abort/error signal
Takeshi Yoshino <tyoshino@google.com>
parents:
118
diff
changeset

949 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResulterror">error</a> to <a>sourceErrorDetail</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

950 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

951 
<li>Set <a>amountBeingReturned</a> to <var>amountConsumed</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

952 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

953 
<li>Unset <a>readPending</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

954 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

955 
<li>Fulfill <var>readPromise</var> with <var>result</var></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

956 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

957 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

958 

78  959 
<p> 
83
afed6501a898
moved images, fixed typos, fixed header
fmoussa <feras.moussa@hotmail.com>
parents:
81
diff
changeset

960 
<img src="images/fulfilling.png" alt="How new data is automatically fetched"> 
78  961 
</p> 
962 

76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

963 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

964 
This method is useful if 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

965 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

966 
<li>You don't care in what size and as how many fragments the data will be received</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

967 
<li>You want to limit the number of bytes read for flow control</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

968 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

969 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

970 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

971 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

972 
<dt>Promise&lt;ByteStreamReadResult> pipe()</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

973 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

974 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

975 
This method bulk transfers bytes from the ReadableStream to another <a>WritableStream</a>. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

976 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

977 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

978 
<section class="note"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

979 
Fulfillment of the returned Promise doesn't necessarily mean that the data transferred to <var>destination</var> has been successfully read from it. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

980 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

981 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

982 
<section class="note"> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

983 
TODO: Rewrite this to update <a>amountBeingReturned</a> as numBytesAcknowledged of <a>PendingWriteDescriptor</a>s are updated 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

984 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

985 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

986 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

987 
This method must run the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

988 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

989 
<ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

990 
<li>If <a>readPending</a> is set, throw an "<code><a>InvalidStateError</a></code>"</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

991 
<li>Set <a>readPending</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

992 

110
6a7a40bde1e5
Abort wait > abort waiting
Takeshi Yoshino <tyoshino@google.com>
parents:
109
diff
changeset

993 
<li>Run <a>abort waiting</a> algorithm on <var>destination</var></a> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

994 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

995 
<li>Set <a>amountBeingReturned</a> to 0</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

996 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

997 
<li><a>Retrieve data</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

998 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

999 
<li>Let <var>pipePromise</var> be a new <a>Promise</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1000 
<li>Return <var>pipePromise</var>, and then continue to process the steps in this algorithm</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1001 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1002 
<li>Let <var>totalAmountTransferred</var> be 0</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1003 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1004 
Repeat the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1005 
<ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1006 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1007 
Whenever <a>readDataBuffer</a> is not empty or <a>eofReached</a> is set, 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1008 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1009 
<dt>If this happened in the event loop</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1010 
<dd>Run the steps below</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1011 
<dt>Otherwise</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1012 
<dd>Queue a task which runs the steps below</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1013 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1014 
<ol> 
100
7421b9a22a7e
More bug fix in pipe(). numBytesRequested is used where numBytesSpaceAvailable must be used.
Takeshi Yoshino <tyoshino@google.com>
parents:
99
diff
changeset

1015 
<li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1016 
Let <var>readableAmount</var> be the number of bytes in <a>readDataBuffer</a> 
100
7421b9a22a7e
More bug fix in pipe(). numBytesRequested is used where numBytesSpaceAvailable must be used.
Takeshi Yoshino <tyoshino@google.com>
parents:
99
diff
changeset

1017 
<section class="note"> 
7421b9a22a7e
More bug fix in pipe(). numBytesRequested is used where numBytesSpaceAvailable must be used.
Takeshi Yoshino <tyoshino@google.com>
parents:
99
diff
changeset

1018 
It's fine to process only part of the bytes, and process the rest in the next task. 
7421b9a22a7e
More bug fix in pipe(). numBytesRequested is used where numBytesSpaceAvailable must be used.
Takeshi Yoshino <tyoshino@google.com>
parents:
99
diff
changeset

1019 
</section> 
7421b9a22a7e
More bug fix in pipe(). numBytesRequested is used where numBytesSpaceAvailable must be used.
Takeshi Yoshino <tyoshino@google.com>
parents:
99
diff
changeset

1020 
</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1021 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1022 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1023 
<dt>If <var>size</var> is specified</dt> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1024 
<dd>Let <var>amountToTransfer</var> be min(<var>size</var>  <var>totalAmountTransferred</var>, <var>readableAmount</var>)</dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1025 
<dt>Otherwise</dt> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1026 
<dd>Let <var>amountToTransfer</var> be <var>readableAmount</var></dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1027 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1028 
</li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1029 
<li>Set <a>amountBeingReturned</a> to <a>amountBeingReturned</a> + <var>amountToTransfer</var></li> 
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1030 
<li>Pop <var>amountToTransfer</var> bytes from <a>readDataBuffer</a>, and then write it to <a>dataSink</a> of <var>destination</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1031 

98
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

1032 
<li>Let <var>pendingWrite</var> be a new <a>PendingWriteDescriptor</a></li> 
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

1033 
<li>Set <var>pendingWrite.promise</var> to <code>null</code></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1034 
<li>Set <var>pendingWrite.amount</var> to <var>amountToTransfer</var></li> 
98
3b89f8cea0fd
More tuple > pendingWrite renaming
Takeshi Yoshino <tyoshino@google.com>
parents:
97
diff
changeset

1035 
<li>Push <var>pendingWrite</var> to <a>pendingWriteQueue</a> of <var>destination</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1036 

107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1037 
<li>Set <var>totalAmountTransferred</var> to <var>totalAmountTransferred</var> + <var>amountToTransfer</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1038 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1039 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1040 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1041 
<dt>If <a>eofReached</a> is set</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1042 
<dd>Break from this loop</dd> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1043 
<dt>If <var>size</var> is specified and <var>totalAmountTransferred</var> equals to <var>size</var></dt> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1044 
<dd>Break from this loop</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1045 
</dl> 
102
a176607d4c3a
TODO about pipe() finish timing
Takeshi Yoshino <tyoshino@google.com>
parents:
101
diff
changeset

1046 
<section class="note"> 
a176607d4c3a
TODO about pipe() finish timing
Takeshi Yoshino <tyoshino@google.com>
parents:
101
diff
changeset

1047 
Need to revisit. Finish when write to the destination completes? 
a176607d4c3a
TODO about pipe() finish timing
Takeshi Yoshino <tyoshino@google.com>
parents:
101
diff
changeset

1048 
</section> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1049 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1050 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1051 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1052 
<li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1053 
Whenever <a>pendingWriteQueue</a> of <var>destination</var> is empty and <a>spaceAvailable</a> of <var>destination</var> is not 0, 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1054 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1055 
<dt>If this happened in the event loop</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1056 
<dd>Run the steps below</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1057 
<dt>Otherwise</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1058 
<dd>Queue a task which runs the steps below</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1059 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1060 
<ol> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1061 
<li>Let <var>destSpaceAvailable</var> be <a>spaceAvailable</a> of <var>destination</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1062 
<li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1063 
<dl class="switch"> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1064 
<dt>If <var>size</var> is specified</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1065 
<dd> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1066 
Set <a>pipePullAmount</a> to min(<var>size</var>  <var>totalAmountTransferred</var>, <var>destSpaceAvailable</var>) 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1067 
<section class="note"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1068 
If <a href="#widlReadableStreampullAmount">pullAmount</a> is set to 0, pipe() transfers data in pull style. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1069 
I.e. only bytes of the same number as the number of bytes writable to <var>destination</var> are retrieved from the data source. 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1070 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1071 
<section class="note"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1072 
Setting <a href="#widlReadableStreampullAmount">pullAmount</a> to a small value doesn't have an effect of throttling the pace of pipe(). 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1073 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1074 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1075 
<dt>Otherwise</dt> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1076 
<dd>Set <a>pipePullAmount</a> to <var>destSpaceAvailable</var></dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1077 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1078 
</li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1079 
<li>Set <a>amountBeingReturned</a> to 0</li> 
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1080 
<li><a>Retrieve data</a></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1081 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1082 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1083 
</ul> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1084 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1085 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1086 
<li>Set <a>pipePullAmount</a> to 0</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1087 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1088 
<li>Unset <a>readPending</a></li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1089 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1090 
<li>Let <var>result</var> be a new <a>ByteStreamReadResult</a></li> 
105
0ba39ba3955b
Fix typo in pipe() algorithm
Takeshi Yoshino <tyoshino@google.com>
parents:
104
diff
changeset

1091 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultdata">data</a> to <code>undefined</code>. 
101
7da4a886ff9f
More pipe() bug fixes
Takeshi Yoshino <tyoshino@google.com>
parents:
100
diff
changeset

1092 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResulteof">eof</a> to <code>true</code> if <a>eofReached</a></li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1093 
<li>Set <var>result</var>.<a href="#widlByteStreamReadResultamountConsumed">amountConsumed</a> to <var>totalAmountTransferred</var></li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1094 
<li> 
101
7da4a886ff9f
More pipe() bug fixes
Takeshi Yoshino <tyoshino@google.com>
parents:
100
diff
changeset

1095 
Fulfill <var>pipePromise</var> with <var>result</var> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1096 
<section class="note"> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1097 
At this point, <a>amountBeingReturned</a> is not yet reset 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1098 
</section> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1099 
</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1100 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1101 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1102 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1103 
<dl class="parameters"> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1104 
<dt>WritableStream destination</dt> 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1105 
<dd>Destination <a>WritableStream</a>.</dd> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1106 
<dt>optional [Clamp] unsigned long long size</dt> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1107 
<dd>Number of bytes to transfer.</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1108 
</dl> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1109 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1110 

123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1111 
<dt>ReadableStream fork()</dt> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1112 
<dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1113 
<p> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1114 
This method creates a new ReadableStream which refers to the same <a>dataSource</a> as the current ReadableStream. 
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1115 
Data sources are range reference counted so that a range in a data source is freed only when all the ReadableStreams sharing the data source finish consuming it. 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1116 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1117 

63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1118 
<p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1119 
This method must run the steps below: 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1120 
<ol> 
123
2c23cbb3665f
Revert name back to Readable/WritableStream
Takeshi Yoshino <tyoshino@google.com>
parents:
122
diff
changeset

1121 
<li>Let <var>branch</var> be a new ReadableStream which refers to <a>dataSource</a> and has the same <a>amountRequested</a> value, <a>readDataBuffer</a> contents and <a>eofReached</a> value as the current ReadableStream.</li> 
107
276491848949
Rename variables agnostic to type of data Streams API handles
Takeshi Yoshino <tyoshino@google.com>
parents:
106
diff
changeset

1122 
<li>If <a>amountRequested</a> is not 0, up to <a>amountRequested</a> bytes arriving in the future must be forwarded to <var>branch</var>.</li> 
76
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1123 
<li>Return <var>branch</var>.</li> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1124 
</ol> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1125 
</p> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1126 
</dd> 
63f6521d7457
Moved preview to overview, and added note about preview deprication
fmoussa <feras.moussa@hotmail.com>
parents:
46
diff
changeset

1127 

118  1128 
<dt>Promise&lt;undefined> readAbort(optional any reason)</dt> 
117 