| 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 barback.graph.transform_node; | 5 library barback.graph.transform_node; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:async/async.dart'; |
| 10 |
| 9 import '../asset/asset.dart'; | 11 import '../asset/asset.dart'; |
| 10 import '../asset/asset_id.dart'; | 12 import '../asset/asset_id.dart'; |
| 11 import '../asset/asset_node.dart'; | 13 import '../asset/asset_node.dart'; |
| 12 import '../asset/asset_node_set.dart'; | 14 import '../asset/asset_node_set.dart'; |
| 13 import '../errors.dart'; | 15 import '../errors.dart'; |
| 14 import '../log.dart'; | 16 import '../log.dart'; |
| 15 import '../transformer/aggregate_transform.dart'; | 17 import '../transformer/aggregate_transform.dart'; |
| 16 import '../transformer/aggregate_transformer.dart'; | 18 import '../transformer/aggregate_transformer.dart'; |
| 17 import '../transformer/declaring_aggregate_transform.dart'; | 19 import '../transformer/declaring_aggregate_transform.dart'; |
| 18 import '../transformer/declaring_aggregate_transformer.dart'; | 20 import '../transformer/declaring_aggregate_transformer.dart'; |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 | 432 |
| 431 _state = _State.DECLARING; | 433 _state = _State.DECLARING; |
| 432 var controller = new DeclaringAggregateTransformController(this); | 434 var controller = new DeclaringAggregateTransformController(this); |
| 433 _declareController = controller; | 435 _declareController = controller; |
| 434 _streams.onLogPool.add(controller.onLog); | 436 _streams.onLogPool.add(controller.onLog); |
| 435 for (var primary in _primaries) { | 437 for (var primary in _primaries) { |
| 436 controller.addId(primary.id); | 438 controller.addId(primary.id); |
| 437 } | 439 } |
| 438 _maybeFinishDeclareController(); | 440 _maybeFinishDeclareController(); |
| 439 | 441 |
| 440 syncFuture(() { | 442 new Future.sync(() { |
| 441 return (transformer as DeclaringAggregateTransformer) | 443 return (transformer as DeclaringAggregateTransformer) |
| 442 .declareOutputs(controller.transform); | 444 .declareOutputs(controller.transform); |
| 443 }).whenComplete(() { | 445 }).whenComplete(() { |
| 444 // Cancel the controller here even if `declareOutputs` wasn't interrupted. | 446 // Cancel the controller here even if `declareOutputs` wasn't interrupted. |
| 445 // Since the declaration is finished, we want to close out the | 447 // Since the declaration is finished, we want to close out the |
| 446 // controller's streams. | 448 // controller's streams. |
| 447 controller.cancel(); | 449 controller.cancel(); |
| 448 _declareController = null; | 450 _declareController = null; |
| 449 }).then((_) { | 451 }).then((_) { |
| 450 if (_isRemoved) return; | 452 if (_isRemoved) return; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 Future<bool> _runApply() { | 623 Future<bool> _runApply() { |
| 622 var controller = new AggregateTransformController(this); | 624 var controller = new AggregateTransformController(this); |
| 623 _applyController = controller; | 625 _applyController = controller; |
| 624 _streams.onLogPool.add(controller.onLog); | 626 _streams.onLogPool.add(controller.onLog); |
| 625 for (var primary in _primaries) { | 627 for (var primary in _primaries) { |
| 626 if (!primary.state.isAvailable) continue; | 628 if (!primary.state.isAvailable) continue; |
| 627 controller.addInput(primary.asset); | 629 controller.addInput(primary.asset); |
| 628 } | 630 } |
| 629 _maybeFinishApplyController(); | 631 _maybeFinishApplyController(); |
| 630 | 632 |
| 631 return syncFuture(() { | 633 return DelegatingFuture.typed(new Future.sync(() { |
| 632 _timeInTransformer.reset(); | 634 _timeInTransformer.reset(); |
| 633 _timeAwaitingInputs.reset(); | 635 _timeAwaitingInputs.reset(); |
| 634 _timeInTransformer.start(); | 636 _timeInTransformer.start(); |
| 635 return transformer.apply(controller.transform); | 637 return transformer.apply(controller.transform); |
| 636 }).whenComplete(() { | 638 }).whenComplete(() { |
| 637 _timeInTransformer.stop(); | 639 _timeInTransformer.stop(); |
| 638 _timeAwaitingInputs.stop(); | 640 _timeAwaitingInputs.stop(); |
| 639 | 641 |
| 640 // Cancel the controller here even if `apply` wasn't interrupted. Since | 642 // Cancel the controller here even if `apply` wasn't interrupted. Since |
| 641 // the apply is finished, we want to close out the controller's streams. | 643 // the apply is finished, we want to close out the controller's streams. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 return false; | 683 return false; |
| 682 }).catchError((error, stackTrace) { | 684 }).catchError((error, stackTrace) { |
| 683 // If the transform became dirty while processing, ignore any errors from | 685 // If the transform became dirty while processing, ignore any errors from |
| 684 // it. | 686 // it. |
| 685 if (_state == _State.NEEDS_APPLY || _isRemoved) return false; | 687 if (_state == _State.NEEDS_APPLY || _isRemoved) return false; |
| 686 | 688 |
| 687 // Catch all transformer errors and pipe them to the results stream. This | 689 // Catch all transformer errors and pipe them to the results stream. This |
| 688 // is so a broken transformer doesn't take down the whole graph. | 690 // is so a broken transformer doesn't take down the whole graph. |
| 689 phase.cascade.reportError(_wrapException(error, stackTrace)); | 691 phase.cascade.reportError(_wrapException(error, stackTrace)); |
| 690 return true; | 692 return true; |
| 691 }); | 693 })); |
| 692 } | 694 } |
| 693 | 695 |
| 694 /// Handle the results of running [Transformer.apply]. | 696 /// Handle the results of running [Transformer.apply]. |
| 695 /// | 697 /// |
| 696 /// [controller] should be the controller for the [AggegateTransform] passed | 698 /// [controller] should be the controller for the [AggegateTransform] passed |
| 697 /// to [AggregateTransformer.apply]. | 699 /// to [AggregateTransformer.apply]. |
| 698 void _handleApplyResults(AggregateTransformController controller) { | 700 void _handleApplyResults(AggregateTransformController controller) { |
| 699 _consumedPrimaries = controller.consumedPrimaries; | 701 _consumedPrimaries = controller.consumedPrimaries; |
| 700 | 702 |
| 701 var newOutputs = controller.outputs; | 703 var newOutputs = controller.outputs; |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 877 /// declaring and [APPLYING] otherwise. If a primary input is added or | 879 /// declaring and [APPLYING] otherwise. If a primary input is added or |
| 878 /// removed, this will transition to [DECLARING]. | 880 /// removed, this will transition to [DECLARING]. |
| 879 static const APPLIED = const _State._("applied"); | 881 static const APPLIED = const _State._("applied"); |
| 880 | 882 |
| 881 final String name; | 883 final String name; |
| 882 | 884 |
| 883 const _State._(this.name); | 885 const _State._(this.name); |
| 884 | 886 |
| 885 String toString() => name; | 887 String toString() => name; |
| 886 } | 888 } |
| OLD | NEW |