Skip to content
This repository was archived by the owner on Dec 18, 2017. It is now read-only.

Commit f40cb55

Browse files
committed
Code cleanup
- Moved methods around - Made nested classes private - Fixed some spacing
1 parent 3e7a098 commit f40cb55

File tree

1 file changed

+45
-33
lines changed

1 file changed

+45
-33
lines changed

src/Microsoft.Framework.Runtime/DependencyManagement/WalkContext.cs

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,6 @@ public class WalkContext
1717
{
1818
private readonly IDictionary<string, Item> _usedItems = new Dictionary<string, Item>();
1919

20-
void ForEach<TState>(Node root, TState state, Func<Node, TState, TState> visitor)
21-
{
22-
// breadth-first walk of Node tree
23-
24-
var queue = new Queue<Tuple<Node, TState>>();
25-
var patience = 10000;
26-
queue.Enqueue(Tuple.Create(root, state));
27-
while (!queue.IsEmpty() && --patience != 0)
28-
{
29-
var work = queue.Dequeue();
30-
var innerState = visitor(work.Item1, work.Item2);
31-
foreach (var innerNode in work.Item1.InnerNodes)
32-
{
33-
queue.Enqueue(Tuple.Create(innerNode, innerState));
34-
}
35-
}
36-
}
37-
38-
private void ForEach(Node root, Action<Node> visitor)
39-
{
40-
// breadth-first walk of Node tree, without TState parameter
41-
ForEach(root, 0, (node, _) =>
42-
{
43-
visitor(node);
44-
return 0;
45-
});
46-
}
47-
4820
public void Walk(
4921
IEnumerable<IDependencyProvider> dependencyResolvers,
5022
string name,
@@ -133,6 +105,7 @@ public void Walk(
133105
{
134106
// Create a picture of what has not been rejected yet
135107
var tracker = new Tracker();
108+
136109
ForEach(root, true, (node, state) =>
137110
{
138111
if (!state || node.Disposition == Disposition.Rejected)
@@ -141,6 +114,7 @@ public void Walk(
141114
node.Disposition = Disposition.Rejected;
142115
return false;
143116
}
117+
144118
tracker.Track(node.Item);
145119
return true;
146120
});
@@ -164,14 +138,17 @@ public void Walk(
164138
{
165139
return "Rejected";
166140
}
141+
167142
if (state == "Walking" && tracker.IsDisputed(node.Item))
168143
{
169144
return "Ambiguous";
170145
}
146+
171147
if (state == "Ambiguous")
172148
{
173149
tracker.MarkAmbiguous(node.Item);
174150
}
151+
175152
return state;
176153
});
177154

@@ -182,18 +159,22 @@ public void Walk(
182159
{
183160
return false;
184161
}
162+
185163
if (tracker.IsAmbiguous(node.Item))
186164
{
187165
return false;
188166
}
167+
189168
if (node.Disposition == Disposition.Acceptable)
190169
{
191170
node.Disposition = tracker.IsBestVersion(node.Item) ? Disposition.Accepted : Disposition.Rejected;
192171
}
172+
193173
return node.Disposition == Disposition.Accepted;
194174
});
195175

196176
incomplete = false;
177+
197178
ForEach(root, node => incomplete |= node.Disposition == Disposition.Acceptable);
198179

199180
// uncomment in case of emergencies: TraceState(root);
@@ -212,6 +193,7 @@ public void Walk(
212193
{
213194
_usedItems[node.Item.Key.Name] = node.Item;
214195
}
196+
215197
return true;
216198
});
217199

@@ -235,10 +217,39 @@ private void TraceState(Node root)
235217
{
236218
elt.WriteTo(writer);
237219
}
220+
238221
Trace.TraceInformation("[{0}] Current State\r\n{1}", GetType().Name, sb);
239222
}
240223

241-
public enum Disposition
224+
private static void ForEach<TState>(Node root, TState state, Func<Node, TState, TState> visitor)
225+
{
226+
// breadth-first walk of Node tree
227+
228+
var queue = new Queue<Tuple<Node, TState>>();
229+
var patience = 10000;
230+
queue.Enqueue(Tuple.Create(root, state));
231+
while (!queue.IsEmpty() && --patience != 0)
232+
{
233+
var work = queue.Dequeue();
234+
var innerState = visitor(work.Item1, work.Item2);
235+
foreach (var innerNode in work.Item1.InnerNodes)
236+
{
237+
queue.Enqueue(Tuple.Create(innerNode, innerState));
238+
}
239+
}
240+
}
241+
242+
private static void ForEach(Node root, Action<Node> visitor)
243+
{
244+
// breadth-first walk of Node tree, without TState parameter
245+
ForEach(root, 0, (node, _) =>
246+
{
247+
visitor(node);
248+
return 0;
249+
});
250+
}
251+
252+
private enum Disposition
242253
{
243254
Acceptable,
244255
Rejected,
@@ -287,6 +298,7 @@ private Item Resolve(
287298
Dependencies = hit.Item2.Dependencies,
288299
Resolver = hit.Item1,
289300
};
301+
290302
resolvedItems[packageKey] = item;
291303
resolvedItems[hit.Item2.Identity] = item;
292304
return item;
@@ -301,7 +313,7 @@ public void Populate(FrameworkName frameworkName, IList<LibraryDescription> libr
301313
var resolver = groupByResolver.Key;
302314
var packageKeys = groupByResolver.Select(x => x.Value.Key).ToList();
303315

304-
Trace.TraceInformation("[{0}]: " + String.Join(", ", packageKeys), resolver.GetType().Name);
316+
Trace.TraceInformation("[{0}]: " + string.Join(", ", packageKeys), resolver.GetType().Name);
305317

306318
var descriptions = groupByResolver.Select(entry =>
307319
{
@@ -334,7 +346,7 @@ private IEnumerable<LibraryDependency> CorrectDependencyVersion(LibraryDependenc
334346
}
335347
}
336348

337-
public class Node
349+
private class Node
338350
{
339351
public Node()
340352
{
@@ -356,15 +368,15 @@ public override string ToString()
356368
}
357369

358370
[DebuggerDisplay("{Key}")]
359-
public class Item
371+
private class Item
360372
{
361373
public LibraryDescription Description { get; set; }
362374
public Library Key { get; set; }
363375
public IDependencyProvider Resolver { get; set; }
364376
public IEnumerable<LibraryDependency> Dependencies { get; set; }
365377
}
366378

367-
public class Tracker
379+
private class Tracker
368380
{
369381
class Entry
370382
{

0 commit comments

Comments
 (0)