OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 /** | 7 /** |
8 * Basic input stream which supplies binary data. | 8 * Basic input stream which supplies binary data. |
9 * | 9 * |
10 * Input streams are used to read data sequentially from some data | 10 * Input streams are used to read data sequentially from some data |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 /** | 108 /** |
109 * SYSTEM encoding is the current code page on Windows and UTF-8 on | 109 * SYSTEM encoding is the current code page on Windows and UTF-8 on |
110 * Linux and Mac. | 110 * Linux and Mac. |
111 */ | 111 */ |
112 static const Encoding SYSTEM = const Encoding._internal("SYSTEM"); | 112 static const Encoding SYSTEM = const Encoding._internal("SYSTEM"); |
113 const Encoding._internal(String this.name); | 113 const Encoding._internal(String this.name); |
114 final String name; | 114 final String name; |
115 } | 115 } |
116 | 116 |
117 | 117 |
118 /** | |
119 * A string input stream wraps a basic input stream and supplies | |
120 * string data. This data can be read either as string chunks or as | |
121 * lines separated by line termination character sequences. | |
122 */ | |
123 abstract class StringInputStream { | |
124 /** | |
125 * Decodes a binary input stream into characters using the specified | |
126 * encoding. | |
127 */ | |
128 factory StringInputStream(InputStream input, | |
129 [Encoding encoding = Encoding.UTF_8]) { | |
130 return new _StringInputStream(input, encoding); | |
131 } | |
132 | |
133 /** | |
134 * Reads up to [len] characters from the stream. if [len] is not | |
135 * specified reads as many characters as is available from the | |
136 * stream. If no data is available null will be returned. | |
137 */ | |
138 String read([int len]); | |
139 | |
140 /** | |
141 * Reads the next line from the stream. The line ending characters | |
142 * will not be part of the returned string. If a full line is not | |
143 * available null will be returned. | |
144 */ | |
145 String readLine(); | |
146 | |
147 /** | |
148 * Returns the number of characters available for immediate | |
149 * reading. Note that this includes all characters that will be in | |
150 * the String returned from [read] this includes line breaking | |
151 * characters. If [readLine] is used for reading one can observe | |
152 * less characters being returned as the line breaking characters | |
153 * are discarded. | |
154 */ | |
155 int available(); | |
156 | |
157 /** | |
158 * Returns whether the stream has been closed. There might still be | |
159 * more data to read. | |
160 */ | |
161 bool get closed; | |
162 | |
163 /** | |
164 * Returns the encoding used to decode the binary data into characters. | |
165 */ | |
166 Encoding get encoding; | |
167 | |
168 /** | |
169 * Sets the handler that gets called when data is available. The two | |
170 * handlers [onData] and [onLine] are mutually exclusive | |
171 * and setting one will remove the other. | |
172 */ | |
173 void set onData(void callback()); | |
174 | |
175 /** | |
176 * Sets the handler that gets called when a line is available. The | |
177 * two handlers [onData] and [onLine] are mutually | |
178 * exclusive and setting one will remove the other. | |
179 */ | |
180 void set onLine(void callback()); | |
181 | |
182 /** | |
183 * Sets the handler that gets called when there will be no more data | |
184 * available in the stream. | |
185 */ | |
186 void set onClosed(void callback()); | |
187 | |
188 /** | |
189 * Sets the handler that gets called when the underlying | |
190 * communication channel gets into some kind of error situation. | |
191 */ | |
192 void set onError(void callback(e)); | |
193 } | |
194 | |
195 | |
196 /** | |
197 * A chunked input stream wraps a basic input stream and supplies | |
198 * binary data in configurable chunk sizes. | |
199 */ | |
200 abstract class ChunkedInputStream { | |
201 /** | |
202 * Adds buffering to an input stream and provide the ability to read | |
203 * the data in known size chunks. | |
204 */ | |
205 factory ChunkedInputStream(InputStream input, [int chunkSize = 0]) { | |
206 return new _ChunkedInputStream(input, chunkSize); | |
207 } | |
208 | |
209 /** | |
210 * Reads [chunkSize] bytes from the stream. If [chunkSize] bytes are | |
211 * not currently available null is returned. When the stream is | |
212 * closed the last call can return with less than [chunkSize] bytes. | |
213 */ | |
214 List<int> read(); | |
215 | |
216 /** | |
217 * Returns whether the stream has been closed. There might still be | |
218 * more data to read. | |
219 */ | |
220 bool get closed; | |
221 | |
222 /** | |
223 * Returns the chunk size used by this stream. | |
224 */ | |
225 int get chunkSize; | |
226 | |
227 /** | |
228 * Sets the chunk size used by this stream. | |
229 */ | |
230 void set chunkSize(int chunkSize); | |
231 | |
232 /** | |
233 * Sets the handler that gets called when at least [chunkSize] bytes | |
234 * of data is available or the underlying stream has been closed and | |
235 * there is still unread data. | |
236 */ | |
237 void set onData(void callback()); | |
238 | |
239 /** | |
240 * Sets the handler that gets called when there will be no more data | |
241 * available in the stream. | |
242 */ | |
243 void set onClosed(void callback()); | |
244 | |
245 /** | |
246 * Sets the handler that gets called when the underlying | |
247 * communication channel gets into some kind of error situation. | |
248 */ | |
249 void set onError(void callback(e)); | |
250 } | |
251 | |
252 | |
253 class StreamException implements Exception { | 118 class StreamException implements Exception { |
254 const StreamException([String this.message = ""]); | 119 const StreamException([String this.message = ""]); |
255 const StreamException.streamClosed() : message = "Stream closed"; | 120 const StreamException.streamClosed() : message = "Stream closed"; |
256 String toString() => "StreamException: $message"; | 121 String toString() => "StreamException: $message"; |
257 final String message; | 122 final String message; |
258 } | 123 } |
OLD | NEW |