| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 * Helper class to wrap a [StreamConsumer<List<int>>] and provide | 8 * Helper class to wrap a [StreamConsumer<List<int>>] and provide |
| 9 * utility functions for writing to the StreamConsumer directly. The | 9 * utility functions for writing to the StreamConsumer directly. The |
| 10 * [IOSink] buffers the input given by all [StringSink] methods and will delay | 10 * [IOSink] buffers the input given by all [StringSink] methods and will delay |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 class _StreamSinkImpl<T> implements StreamSink<T> { | 71 class _StreamSinkImpl<T> implements StreamSink<T> { |
| 72 final StreamConsumer<T> _target; | 72 final StreamConsumer<T> _target; |
| 73 Completer _doneCompleter = new Completer(); | 73 Completer _doneCompleter = new Completer(); |
| 74 Future _doneFuture; | 74 Future _doneFuture; |
| 75 StreamController<T> _controllerInstance; | 75 StreamController<T> _controllerInstance; |
| 76 Completer _controllerCompleter; | 76 Completer _controllerCompleter; |
| 77 bool _isClosed = false; | 77 bool _isClosed = false; |
| 78 bool _isBound = false; | 78 bool _isBound = false; |
| 79 bool _hasError = false; | 79 bool _hasError = false; |
| 80 | 80 |
| 81 _StreamSinkImpl(StreamConsumer<T> this._target) { | 81 _StreamSinkImpl(this._target) { |
| 82 _doneFuture = _doneCompleter.future; | 82 _doneFuture = _doneCompleter.future; |
| 83 } | 83 } |
| 84 | 84 |
| 85 void add(T data) { | 85 void add(T data) { |
| 86 if (_isClosed) return; | 86 if (_isClosed) return; |
| 87 _controller.add(data); | 87 _controller.add(data); |
| 88 } | 88 } |
| 89 | 89 |
| 90 void addError(error, [StackTrace stackTrace]) { | 90 void addError(error, [StackTrace stackTrace]) => |
| 91 _controller.addError(error, stackTrace); | 91 _controller.addError(error, stackTrace); |
| 92 } | |
| 93 | 92 |
| 94 Future addStream(Stream<T> stream) { | 93 Future addStream(Stream<T> stream) { |
| 95 if (_isBound) { | 94 if (_isBound) { |
| 96 throw new StateError("StreamSink is already bound to a stream"); | 95 throw new StateError("StreamSink is already bound to a stream"); |
| 97 } | 96 } |
| 98 _isBound = true; | 97 _isBound = true; |
| 99 if (_hasError) return done; | 98 if (_hasError) return done; |
| 100 // Wait for any sync operations to complete. | 99 // Wait for any sync operations to complete. |
| 101 Future targetAddStream() { | 100 Future targetAddStream() { |
| 102 return _target.addStream(stream) | 101 return _target.addStream(stream) |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 242 |
| 244 void writeln([Object obj = ""]) { | 243 void writeln([Object obj = ""]) { |
| 245 write(obj); | 244 write(obj); |
| 246 write("\n"); | 245 write("\n"); |
| 247 } | 246 } |
| 248 | 247 |
| 249 void writeCharCode(int charCode) { | 248 void writeCharCode(int charCode) { |
| 250 write(new String.fromCharCode(charCode)); | 249 write(new String.fromCharCode(charCode)); |
| 251 } | 250 } |
| 252 } | 251 } |
| OLD | NEW |