| 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 part of dart.async; | 5 part of dart.async; |
| 6 | 6 |
| 7 /** Runs user code and takes actions depending on success or failure. */ | 7 /** Runs user code and takes actions depending on success or failure. */ |
| 8 _runUserCode(userCode(), | 8 _runUserCode(userCode(), |
| 9 onSuccess(value), | 9 onSuccess(value), |
| 10 onError(error, StackTrace stackTrace)) { | 10 onError(error, StackTrace stackTrace)) { |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 // This test is done early to avoid handling an async error | 319 // This test is done early to avoid handling an async error |
| 320 // in the _handleData method. | 320 // in the _handleData method. |
| 321 if (count is! int) throw new ArgumentError(count); | 321 if (count is! int) throw new ArgumentError(count); |
| 322 } | 322 } |
| 323 | 323 |
| 324 StreamSubscription<T> _createSubscription( | 324 StreamSubscription<T> _createSubscription( |
| 325 void onData(T data), | 325 void onData(T data), |
| 326 Function onError, | 326 Function onError, |
| 327 void onDone(), | 327 void onDone(), |
| 328 bool cancelOnError) { | 328 bool cancelOnError) { |
| 329 if (_count == 0) { | |
| 330 return new _DoneStreamSubscription<T>(onDone); | |
| 331 } | |
| 332 return new _StateStreamSubscription<T>( | 329 return new _StateStreamSubscription<T>( |
| 333 this, onData, onError, onDone, cancelOnError, _count); | 330 this, onData, onError, onDone, cancelOnError, _count); |
| 334 } | 331 } |
| 335 | 332 |
| 336 void _handleData(T inputEvent, _EventSink<T> sink) { | 333 void _handleData(T inputEvent, _EventSink<T> sink) { |
| 337 _StateStreamSubscription<T> subscription = sink; | 334 _StateStreamSubscription<T> subscription = sink; |
| 338 int count = subscription._count; | 335 int count = subscription._count; |
| 339 if (count > 0) { | 336 if (count > 0) { |
| 340 sink._add(inputEvent); | 337 sink._add(inputEvent); |
| 341 count -= 1; | 338 count -= 1; |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 _addErrorWithReplacement(sink, e, s); | 486 _addErrorWithReplacement(sink, e, s); |
| 490 return null; | 487 return null; |
| 491 } | 488 } |
| 492 if (!isEqual) { | 489 if (!isEqual) { |
| 493 sink._add(inputEvent); | 490 sink._add(inputEvent); |
| 494 _previous = inputEvent; | 491 _previous = inputEvent; |
| 495 } | 492 } |
| 496 } | 493 } |
| 497 } | 494 } |
| 498 } | 495 } |
| OLD | NEW |