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

Side by Side Diff: pkg/barback/lib/src/node_status.dart

Issue 261823008: Reorganize barback's source files. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: re-add barback/lib/src/internal_asset.dart Created 6 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/barback/lib/src/multiset.dart ('k') | pkg/barback/lib/src/node_streams.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
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.
4
5 library barback.node_status;
6
7 /// The status of a node in barback's package graph.
8 ///
9 /// A node has three possible statuses: [IDLE], [MATERIALIZING], and [RUNNING].
10 /// These are ordered from least dirty to most dirty; the [dirtier] and
11 /// [dirtiest] functions make use of this ordering.
12 class NodeStatus {
13 /// The node has finished its work and won't do anything else until external
14 /// input causes it to.
15 ///
16 /// For deferred nodes, this may indicate that they're finished declaring
17 /// their outputs and waiting to be forced.
18 static const IDLE = const NodeStatus("idle");
19
20 /// The node has declared its outputs but their concrete values are still
21 /// being generated.
22 ///
23 /// This is only meaningful for nodes that are or contain declaring
24 /// transformers. Note that a lazy transformer that's declared its outputs but
25 /// isn't actively working to generate them is considered [IDLE], not
26 /// [MATERIALIZING].
27 static const MATERIALIZING = const NodeStatus("materializing");
28
29 /// The node is actively working on declaring or generating its outputs.
30 ///
31 /// Declaring transformers are only considered dirty until they're finished
32 /// declaring their outputs; past that point, they're always either
33 /// [MATERIALIZING] or [IDLE]. Non-declaring transformers, by contrast, are
34 /// always either [RUNNING] or [IDLE].
35 static const RUNNING = const NodeStatus("running");
36
37 final String _name;
38
39 /// Returns the dirtiest status in [statuses].
40 static NodeStatus dirtiest(Iterable<NodeStatus> statuses) =>
41 statuses.fold(NodeStatus.IDLE,
42 (status1, status2) => status1.dirtier(status2));
43
44 const NodeStatus(this._name);
45
46 String toString() => _name;
47
48 /// Returns [this] or [other], whichever is dirtier.
49 NodeStatus dirtier(NodeStatus other) {
50 if (this == RUNNING || other == RUNNING) return RUNNING;
51 if (this == MATERIALIZING || other == MATERIALIZING) return MATERIALIZING;
52 return IDLE;
53 }
54 }
OLDNEW
« no previous file with comments | « pkg/barback/lib/src/multiset.dart ('k') | pkg/barback/lib/src/node_streams.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698