| 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 library schedule; | 5 library schedule; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 | 9 |
| 10 import 'package:stack_trace/stack_trace.dart'; | 10 import 'package:stack_trace/stack_trace.dart'; |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 _schedule.heartbeat(); | 438 _schedule.heartbeat(); |
| 439 return Future.forEach(_contents, (task) { | 439 return Future.forEach(_contents, (task) { |
| 440 _schedule._currentTask = task; | 440 _schedule._currentTask = task; |
| 441 if (_error != null) throw _error; | 441 if (_error != null) throw _error; |
| 442 if (_aborted) return; | 442 if (_aborted) return; |
| 443 | 443 |
| 444 _taskFuture = new SubstituteFuture(task.fn()); | 444 _taskFuture = new SubstituteFuture(task.fn()); |
| 445 return _taskFuture.whenComplete(() { | 445 return _taskFuture.whenComplete(() { |
| 446 _taskFuture = null; | 446 _taskFuture = null; |
| 447 _schedule.heartbeat(); | 447 _schedule.heartbeat(); |
| 448 }).catchError((e) { | 448 }).catchError((e, trace) { |
| 449 var error = new ScheduleError.from(_schedule, e); | 449 var error = new ScheduleError.from(_schedule, e, stackTrace: trace); |
| 450 _signalError(error); | 450 _signalError(error); |
| 451 throw _error; | 451 throw _error; |
| 452 }); | 452 }); |
| 453 }).whenComplete(() { | 453 }).whenComplete(() { |
| 454 _schedule._currentTask = null; | 454 _schedule._currentTask = null; |
| 455 }).then((_) { | 455 }).then((_) { |
| 456 _onTasksCompleteCompleter.complete(); | 456 _onTasksCompleteCompleter.complete(); |
| 457 }).catchError((e) { | 457 }).catchError((e, stackTrace) { |
| 458 _onTasksCompleteCompleter.completeError(e); | 458 _onTasksCompleteCompleter.completeError(e, stackTrace); |
| 459 throw e; | 459 throw e; |
| 460 }).whenComplete(() { | 460 }).whenComplete(() { |
| 461 if (pendingCallbacks.isEmpty) return; | 461 if (pendingCallbacks.isEmpty) return; |
| 462 return _noPendingCallbacks.catchError((e) { | 462 return _noPendingCallbacks.catchError((e, stackTrace) { |
| 463 // Signal the error rather than passing it through directly so that if a | 463 // Signal the error rather than passing it through directly so that if a |
| 464 // timeout happens after an in-task error, both are reported. | 464 // timeout happens after an in-task error, both are reported. |
| 465 _signalError(new ScheduleError.from(_schedule, e)); | 465 _signalError(new ScheduleError.from(_schedule, e, |
| 466 stackTrace: stackTrace)); |
| 466 }); | 467 }); |
| 467 }).whenComplete(() { | 468 }).whenComplete(() { |
| 468 _schedule.heartbeat(); | 469 _schedule.heartbeat(); |
| 469 // If the tasks were otherwise successful, make sure we throw any | 470 // If the tasks were otherwise successful, make sure we throw any |
| 470 // out-of-band errors. If a task failed, make sure we throw the most | 471 // out-of-band errors. If a task failed, make sure we throw the most |
| 471 // recent error. | 472 // recent error. |
| 472 if (_error != null) throw _error; | 473 if (_error != null) throw _error; |
| 473 }); | 474 }); |
| 474 } | 475 } |
| 475 | 476 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 /// The string description of the callback. | 606 /// The string description of the callback. |
| 606 String get description { | 607 String get description { |
| 607 if (_description == null) _description = _thunk(); | 608 if (_description == null) _description = _thunk(); |
| 608 return _description; | 609 return _description; |
| 609 } | 610 } |
| 610 | 611 |
| 611 String toString() => description; | 612 String toString() => description; |
| 612 | 613 |
| 613 PendingCallback._(this._thunk); | 614 PendingCallback._(this._thunk); |
| 614 } | 615 } |
| OLD | NEW |