| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |