Chromium Code Reviews| 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 class _SocketInputStream implements SocketInputStream { | 5 class _SocketInputStream implements SocketInputStream { |
| 6 _SocketInputStream(Socket socket) : _socket = socket { | 6 _SocketInputStream(Socket socket) : _socket = socket { |
| 7 if (_socket._id == -1) _closed = true; | |
| 7 _socket.closeHandler = _closeHandler; | 8 _socket.closeHandler = _closeHandler; |
| 8 } | 9 } |
| 9 | 10 |
| 10 List<int> read([int len]) { | 11 List<int> read([int len]) { |
| 11 int bytesToRead = available(); | 12 int bytesToRead = available(); |
| 12 if (bytesToRead == 0) return null; | 13 if (bytesToRead == 0) return null; |
| 13 if (len !== null) { | 14 if (len !== null) { |
| 14 if (len <= 0) { | 15 if (len <= 0) { |
| 15 throw new StreamException("Illegal length $len"); | 16 throw new StreamException("Illegal length $len"); |
| 16 } else if (bytesToRead > len) { | 17 } else if (bytesToRead > len) { |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 44 | 45 |
| 45 int available() => _socket.available(); | 46 int available() => _socket.available(); |
| 46 | 47 |
| 47 void pipe(OutputStream output, [bool close = true]) { | 48 void pipe(OutputStream output, [bool close = true]) { |
| 48 _pipe(this, output, close: close); | 49 _pipe(this, output, close: close); |
| 49 } | 50 } |
| 50 | 51 |
| 51 void close() { | 52 void close() { |
| 52 if (!_closed) { | 53 if (!_closed) { |
| 53 _socket.close(); | 54 _socket.close(); |
| 54 if (_clientCloseHandler !== null) _clientCloseHandler(); | |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 bool get closed() => _closed; | 58 bool get closed() => _closed; |
| 59 | 59 |
| 60 void set dataHandler(void callback()) { | 60 void set dataHandler(void callback()) { |
| 61 _socket._dataHandler = callback; | 61 _socket._dataHandler = callback; |
| 62 } | 62 } |
| 63 | 63 |
| 64 void set closeHandler(void callback()) { | 64 void set closeHandler(void callback()) { |
| 65 _clientCloseHandler = callback; | 65 _clientCloseHandler = callback; |
| 66 _socket._closeHandler = _closeHandler; | 66 _socket._closeHandler = _closeHandler; |
| 67 } | 67 } |
| 68 | 68 |
| 69 void set errorHandler(void callback()) { | 69 void set errorHandler(void callback()) { |
| 70 _socket.errorHandler = callback; | 70 _socket.errorHandler = callback; |
| 71 } | 71 } |
| 72 | 72 |
| 73 void _closeHandler() { | 73 void _closeHandler() { |
| 74 _closed = true; | 74 _closed = true; |
| 75 if (_clientCloseHandler !== null) _clientCloseHandler(); | 75 if (_clientCloseHandler !== null) { |
| 76 _clientCloseHandler(); | |
| 77 } | |
| 76 } | 78 } |
| 77 | 79 |
| 78 Socket _socket; | 80 Socket _socket; |
| 79 Function _clientCloseHandler; | 81 Function _clientCloseHandler; |
| 80 bool _closed = false; | 82 bool _closed = false; |
| 81 } | 83 } |
| 82 | 84 |
| 83 | 85 |
| 84 class _SocketOutputStream implements SocketOutputStream { | 86 class _SocketOutputStream implements SocketOutputStream { |
| 85 _SocketOutputStream(Socket socket) | 87 _SocketOutputStream(Socket socket) |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 113 _closed = true; | 115 _closed = true; |
| 114 } | 116 } |
| 115 | 117 |
| 116 void set noPendingWriteHandler(void callback()) { | 118 void set noPendingWriteHandler(void callback()) { |
| 117 _noPendingWriteHandler = callback; | 119 _noPendingWriteHandler = callback; |
| 118 if (_noPendingWriteHandler != null) { | 120 if (_noPendingWriteHandler != null) { |
| 119 _socket._writeHandler = _writeHandler; | 121 _socket._writeHandler = _writeHandler; |
| 120 } | 122 } |
| 121 } | 123 } |
| 122 | 124 |
| 123 void set closeHandler(void callback()) { | |
|
Søren Gjesse
2012/02/10 10:44:33
We still have a closeHandler setter int the Output
| |
| 124 _socket.closeHandler = callback; | |
| 125 } | |
| 126 | |
| 127 void set errorHandler(void callback()) { | 125 void set errorHandler(void callback()) { |
| 128 _streamErrorHandler = callback; | 126 _streamErrorHandler = callback; |
| 129 if (_streamErrorHandler != null) { | 127 if (_streamErrorHandler != null) { |
| 130 _socket.errorHandler = _errorHandler; | 128 _socket.errorHandler = _errorHandler; |
| 131 } else { | 129 } else { |
| 132 _socket.errorHandler = null; | 130 _socket.errorHandler = null; |
| 133 } | 131 } |
| 134 } | 132 } |
| 135 | 133 |
| 136 bool _write(List<int> buffer, int offset, int len, bool copyBuffer) { | 134 bool _write(List<int> buffer, int offset, int len, bool copyBuffer) { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 186 if (_streamErrorHandler != null) _streamErrorHandler(); | 184 if (_streamErrorHandler != null) _streamErrorHandler(); |
| 187 } | 185 } |
| 188 | 186 |
| 189 Socket _socket; | 187 Socket _socket; |
| 190 _BufferList _pendingWrites; | 188 _BufferList _pendingWrites; |
| 191 var _noPendingWriteHandler; | 189 var _noPendingWriteHandler; |
| 192 var _streamErrorHandler; | 190 var _streamErrorHandler; |
| 193 bool _closing = false; | 191 bool _closing = false; |
| 194 bool _closed = false; | 192 bool _closed = false; |
| 195 } | 193 } |
| OLD | NEW |