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

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

Issue 8318009: Update the streams interfaces (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Starting implementation Created 9 years, 2 months 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
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 class SocketInputStream2 implements InputStream2 {
6 SocketInputStream2(Socket socket) {
7 _socket = socket;
8 }
9
10 List<int> read() {
11 // Return whatever data is available.
12 int available = _socket.available();
13 if (available == 0) {
14 return null;
15 }
16 List<int> buffer = new List<int>(available);
17 int read = _socket.readList(buffer, 0, available);
18 if (read < available) {
19 List<int> newBuffer = new List<int>(read);
20 newBuffer.copyFrom(buffer, 0, 0, read);
21 return newBuffer;
22 } else {
23 return buffer;
24 }
25 }
26
27 void set dataHandler(void callback()) {
28 _socket.setDataHandler(callback);
29 }
30
31 void set closeHandler(void callback()) {
32 _socket.setCloseHandler(callback);
33 }
34
35 void set errorHandler(void callback(int error)) {
36 _socket.setErrorHandler(
37 void _() { callback(-1); }
38 );
39 }
40
41 Socket _socket;
42 }
43
44
5 class SocketInputStream implements InputStream { 45 class SocketInputStream implements InputStream {
6 SocketInputStream(Socket socket) { 46 SocketInputStream(Socket socket) {
7 _socket = socket; 47 _socket = socket;
8 _buffer = null; 48 _buffer = null;
9 } 49 }
10 50
11 bool read(List<int> buffer, int offset, int len, void callback()) { 51 bool read(List<int> buffer, int offset, int len, void callback()) {
12 // Read data just out of the buffer. 52 // Read data just out of the buffer.
13 if (_buffer !== null && len <= _buffer.length) { 53 if (_buffer !== null && len <= _buffer.length) {
14 buffer.copyFrom(_buffer, 0, offset, len); 54 buffer.copyFrom(_buffer, 0, offset, len);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 Socket _socket; 187 Socket _socket;
148 188
149 /* 189 /*
150 * Read and readUntil read data out of that buffer first before reading new 190 * Read and readUntil read data out of that buffer first before reading new
151 * data out of the socket. 191 * data out of the socket.
152 */ 192 */
153 List<int> _buffer; 193 List<int> _buffer;
154 } 194 }
155 195
156 class SocketOutputStream implements OutputStream { 196 class SocketOutputStream implements OutputStream {
157 SocketOutputStream(Socket socket) { 197 SocketOutputStream(Socket socket) : _socket = socket;
158 _socket = socket;
159 }
160 198
161 bool write(List<int> buffer, int offset, int len, void callback()) { 199 bool write(List<int> buffer, int offset, int len, void callback()) {
162 int bytesWritten = _socket.writeList(buffer, offset, len); 200 int bytesWritten = _socket.writeList(buffer, offset, len);
163 201
164 void finishWrite() { 202 void finishWrite() {
165 bytesWritten += _socket.writeList( 203 bytesWritten += _socket.writeList(
166 buffer, offset + bytesWritten, len - bytesWritten); 204 buffer, offset + bytesWritten, len - bytesWritten);
167 if (bytesWritten < len) { 205 if (bytesWritten < len) {
168 _socket.setWriteHandler(finishWrite); 206 _socket.setWriteHandler(finishWrite);
169 } else { 207 } else {
170 assert(bytesWritten == len); 208 assert(bytesWritten == len);
171 if (callback !== null) { 209 if (callback !== null) {
172 callback(); 210 callback();
173 } 211 }
174 } 212 }
175 } 213 }
176 214
177 if (bytesWritten == len) { 215 if (bytesWritten == len) {
178 return true; 216 return true;
179 } 217 }
180 _socket.setWriteHandler(finishWrite); 218 _socket.setWriteHandler(finishWrite);
181 return false; 219 return false;
182 } 220 }
183 221
184 Socket _socket; 222 Socket _socket;
185 } 223 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698