Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: runtime/bin/input_stream.dart

Issue 8698018: Update of the input stream interface (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 /** 5 /**
6 * Input is read from a given input stream. Such an input stream can 6 * An input stream is used to read data sequentially from a data source.
7 * be an endpoint, e.g., a socket or a file, or another input stream.
8 * Multiple input streams can be chained together to operate collaboratively
9 * on a given input.
10 */ 7 */
11 interface InputStream { 8 interface InputStream {
12 /** 9 /**
13 * Reads data from the stream. Returns a system allocated buffer 10 * Reads data from the stream. If no encoding is set fir the stream
Mads Ager (google) 2011/11/30 10:44:07 fir -> for
14 * with up to [len] bytes. If no value is passed for [len] all 11 * it returns a system allocated buffer with up to [len] bytes. If
15 * available data will be returned. If no data is available null will 12 * encoding is set it returns a [String] with up to [len]
16 * be returned. 13 * characters. If no value is passed for [len] all available data
14 * will be returned. If no data is available null will be returned.
17 */ 15 */
18 List<int> read([int len]); 16 Object read([int len]);
17
18 /**
19 * Reads a line of characters from the stream. If a full line is not
20 * available the return value is null. If no encoding is set for the
21 * stream an exception is thrown.
22 */
23 String readLine();
19 24
20 /** 25 /**
21 * Reads up to [len] bytes into buffer [buffer] starting at offset 26 * Reads up to [len] bytes into buffer [buffer] starting at offset
22 * [offset]. Returns the number of bytes actually read which might 27 * [offset]. Returns the number of bytes actually read which might
23 * be zero. If [offset] is not specified 0 is used. If [len] is not 28 * be zero. If [offset] is not specified 0 is used. If [len] is not
24 * specified the length of [buffer] is used. 29 * specified the length of [buffer] is used. If an encoding is set
30 * for the stream an exception is thrown.
25 */ 31 */
26 int readInto(List<int> buffer, [int offset, int len]); 32 int readInto(List<int> buffer, [int offset, int len]);
27 33
28 /** 34 /**
35 * Reads data from the stream until the pattern [pattern] is
36 * encountered.
37 */
38 Object readUntil(Object pattern);
Mads Ager (google) 2011/11/30 10:44:07 Should pattern have type Pattern?
39
40 /**
41 * Pipe the data from this input stream directly to the
42 * [destination] [OutputStream]. After the input stream has been
43 * connected to an output stream data cannot be read from it
44 * anymore. When there is no more data in the input stream [close]
45 * will be called on the connected output stream.
46 */
47 void pipe(OutputStream destination);
48
49 /**
29 * Returns the number of bytes available for immediate reading. 50 * Returns the number of bytes available for immediate reading.
Mads Ager (google) 2011/11/30 10:44:07 Hmm, bytes or characters depending on the encoding
30 */ 51 */
31 int available(); 52 int available();
32 53
33 /** 54 /**
55 * Sets the encoding used by the stream for turning bytes into
56 * characters. If encoding is set then calling the [read] method
57 * will return a [String] instead of a [List] of bytes. Currently
58 * the encodings "UTF-8", "ISO-8859-1" and "ASCII" are supported.
Mads Ager (google) 2011/11/30 10:44:07 Maybe there should always be an encoding? A defaul
59 */
60 void set encoding(String encoding);
61 String get encoding();
62
63 /**
64 * Sets the minimum number of bytes required to trigger a the
Mads Ager (google) 2011/11/30 10:44:07 Again, is this bytes or characters depending on th
65 * [dataHandler] ...
66 */
67 void set chunkSize(int chunkSize);
68 int get chunkSize();
69
70 /**
71 * Sets the data pattern to expect before triggering the
72 * [dataHandler] ...
73 */
74 void set dataPattern(Object pattern);
75 get dataPattern();
76
77 /**
34 * Returns whether the stream is closed. There will be no more data 78 * Returns whether the stream is closed. There will be no more data
35 * to read. 79 * to read.
36 */ 80 */
37 bool get closed(); 81 bool get closed();
38 82
39 /** 83 /**
40 * Sets the handler that gets called when data is available. 84 * Sets the handler that gets called when data is available.
41 */ 85 */
42 void set dataHandler(void callback()); 86 void set dataHandler(void callback());
43
44 /**
45 * Sets the handler that gets called when there will be no more data
46 * available in the stream.
47 */
48 void set closeHandler(void callback());
49
50 /**
51 * Sets the handler that gets called when the underlying
52 * communication channel gets into some kind of error situation.
53 */
54 void set errorHandler(void callback());
55 }
56
57
58 interface StringInputStream factory _StringInputStream {
59 /**
60 * Decodes a binary input stream into characters using the specified
61 * encoding.
62 */
63 StringInputStream(InputStream input, [String encoding]);
64
65 /**
66 * Reads as many characters as is available from the stream. If no data is
67 * available null will be returned.
68 */
69 String read();
70
71 /**
72 * Reads the next line from the stream. The line ending characters
73 * will not be part og the returned string. If a full line is not
74 * available null will be returned.
75 */
76 String readLine();
77
78 /**
79 * Returns whether the stream has been closed. There might still be
80 * more data to read.
81 */
82 bool get closed();
83
84 /**
85 * Returns the encoding used to decode the binary data into characters.
86 */
87 String get encoding();
88
89 /**
90 * Sets the handler that gets called when data is available.
91 */
92 void set dataHandler(void callback());
93 87
94 /** 88 /**
95 * Sets the handler that gets called when there will be no more data 89 * Sets the handler that gets called when there will be no more data
96 * available in the stream. 90 * available in the stream.
97 */ 91 */
98 void set closeHandler(void callback()); 92 void set closeHandler(void callback());
99 93
100 /** 94 /**
101 * Sets the handler that gets called when the underlying 95 * Sets the handler that gets called when the underlying
102 * communication channel gets into some kind of error situation. 96 * communication channel gets into some kind of error situation.
103 */ 97 */
104 void set errorHandler(void callback()); 98 void set errorHandler(void callback());
105 } 99 }
106 100
107 101
108 class StreamException implements Exception { 102 class StreamException implements Exception {
109 const StreamException([String this.message = ""]); 103 const StreamException([String this.message = ""]);
110 String toString() => "StreamException: $message"; 104 String toString() => "StreamException: $message";
111 final String message; 105 final String message;
112 } 106 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698