Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1089)

Unified Diff: pkg/barback/lib/src/graph/phase_output.dart

Issue 808713003: Remove barback from the repo. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/barback/lib/src/graph/phase_forwarder.dart ('k') | pkg/barback/lib/src/graph/static_asset_cascade.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/barback/lib/src/graph/phase_output.dart
diff --git a/pkg/barback/lib/src/graph/phase_output.dart b/pkg/barback/lib/src/graph/phase_output.dart
deleted file mode 100644
index 3d6460b657e3d9edcb90f4e82bdf8d22f6acb448..0000000000000000000000000000000000000000
--- a/pkg/barback/lib/src/graph/phase_output.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library barback.graph.phase_output;
-
-import 'dart:async';
-import 'dart:collection';
-
-import '../asset/asset_forwarder.dart';
-import '../asset/asset_node.dart';
-import '../errors.dart';
-import 'phase.dart';
-
-/// A class that handles a single output of a phase.
-///
-/// Normally there's only a single [AssetNode] for a phase's output, but it's
-/// possible that multiple transformers in the same phase emit assets with the
-/// same id, causing collisions. This handles those collisions by forwarding the
-/// chronologically first asset.
-///
-/// When the asset being forwarding changes, the old value of [output] will be
-/// marked as removed and a new value will replace it. Users of this class can
-/// be notified of this using [onAsset].
-class PhaseOutput {
- /// The phase for which this is an output.
- final Phase _phase;
-
- /// A string describing the location of [this] in the transformer graph.
- final String _location;
-
- /// The asset node for this output.
- AssetNode get output => _outputForwarder.node;
- AssetForwarder _outputForwarder;
-
- /// A stream that emits an [AssetNode] each time this output starts forwarding
- /// a new asset.
- Stream<AssetNode> get onAsset => _onAssetController.stream;
- final _onAssetController =
- new StreamController<AssetNode>.broadcast(sync: true);
-
- /// The assets for this output.
- ///
- /// If there's no collision, this will only have one element. Otherwise, it
- /// will be ordered by which asset was added first.
- final _assets = new Queue<AssetNode>();
-
- /// The [AssetCollisionException] for this output, or null if there is no
- /// collision currently.
- AssetCollisionException get collisionException {
- if (_assets.length == 1) return null;
- return new AssetCollisionException(
- _assets.where((asset) => asset.transform != null)
- .map((asset) => asset.transform.info),
- output.id);
- }
-
- PhaseOutput(this._phase, AssetNode output, this._location)
- : _outputForwarder = new AssetForwarder(output) {
- assert(!output.state.isRemoved);
- add(output);
- }
-
- /// Adds an asset node as an output with this id.
- void add(AssetNode node) {
- assert(node.id == output.id);
- assert(!output.state.isRemoved);
- _assets.add(node);
- _watchAsset(node);
- }
-
- /// Removes all existing listeners on [output] without actually closing
- /// [this].
- ///
- /// This marks [output] as removed, but immediately replaces it with a new
- /// [AssetNode] in the same state as the old output. This is used when adding
- /// a new [Phase] to cause consumers of the prior phase's outputs to be to
- /// start consuming the new phase's outputs instead.
- void removeListeners() {
- _outputForwarder.close();
- _outputForwarder = new AssetForwarder(_assets.first);
- _onAssetController.add(output);
- }
-
- /// Watches [node] to adjust [_assets] and [output] when it's removed.
- void _watchAsset(AssetNode node) {
- node.whenRemoved(() {
- if (_assets.length == 1) {
- assert(_assets.single == node);
- _outputForwarder.close();
- _onAssetController.close();
- return;
- }
-
- // If there was more than one asset, we're resolving a collision --
- // possibly partially.
- var wasFirst = _assets.first == node;
- _assets.remove(node);
-
- // If this was the first asset, we replace it with the next asset
- // (chronologically).
- if (wasFirst) removeListeners();
-
- // If there's still a collision, report it. This lets the user know if
- // they've successfully resolved the collision or not.
- if (_assets.length > 1) {
- // TODO(nweiz): report this through the output asset.
- _phase.cascade.reportError(collisionException);
- }
- });
- }
-
- String toString() => "phase output in $_location for $output";
-}
« no previous file with comments | « pkg/barback/lib/src/graph/phase_forwarder.dart ('k') | pkg/barback/lib/src/graph/static_asset_cascade.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698