11 instantiations of GraphNode
NuGet.Commands (8)
RestoreCommand\DependencyGraphResolver.cs (8)
351
GraphNode<RemoteResolveResult> rootGraphNode = new
GraphNode
<RemoteResolveResult>(projectResolvedDependencyGraphItem.LibraryDependency.LibraryRange)
387
GraphNode<RemoteResolveResult> nodeWithCycle =
new
(childLibraryDependency.LibraryRange)
418
new
GraphNode
<RemoteResolveResult>(childLibraryDependency.LibraryRange)
519
GraphNode<RemoteResolveResult> nodeWithConflict =
new
(childResolvedLibraryDependency.LibraryRange)
538
GraphNode<RemoteResolveResult> newGraphNode =
new
(childResolvedLibraryDependency.LibraryRange)
603
GraphNode<RemoteResolveResult> conflictingNode =
new
(childLibraryDependency.LibraryRange)
682
DowngradedFrom = new
GraphNode
<RemoteResolveResult>(downgrade.FromLibraryDependency.LibraryRange)
691
DowngradedTo = new
GraphNode
<RemoteResolveResult>(toResolvedDependencyGraphItem.LibraryDependency.LibraryRange)
NuGet.DependencyResolver.Core (3)
Remote\RemoteDependencyWalker.cs (3)
101
GraphNode<RemoteResolveResult> rootNode = new
GraphNode
<RemoteResolveResult>(libraryRange, rootHasInnerNodes, hasParentNodes)
197
var dependencyNode = new
GraphNode
<RemoteResolveResult>(dependency.LibraryRange)
222
GraphNode<RemoteResolveResult> newNode = new
GraphNode
<RemoteResolveResult>(graphNodeCreationData.LibraryRange, hasInnerNodes, false)
193 references to GraphNode
NuGet.Commands (52)
RestoreCommand\DependencyGraphResolver.cs (16)
331
List<
GraphNode
<RemoteResolveResult>> graphNodes = new();
334
Dictionary<LibraryRangeIndex,
GraphNode
<RemoteResolveResult>> nodesById = new();
340
Queue<(LibraryDependencyIndex, LibraryRangeIndex,
GraphNode
<RemoteResolveResult>)> itemsToFlatten = new();
342
Dictionary<LibraryRangeIndex,
GraphNode
<RemoteResolveResult>> versionConflicts = new();
351
GraphNode
<RemoteResolveResult> rootGraphNode = new GraphNode<RemoteResolveResult>(projectResolvedDependencyGraphItem.LibraryDependency.LibraryRange)
365
(LibraryDependencyIndex currentLibraryDependencyIndex, LibraryRangeIndex currentLibraryRangeIndex,
GraphNode
<RemoteResolveResult> currentGraphNode) = itemsToFlatten.Dequeue();
387
GraphNode
<RemoteResolveResult> nodeWithCycle = new(childLibraryDependency.LibraryRange)
519
GraphNode
<RemoteResolveResult> nodeWithConflict = new(childResolvedLibraryDependency.LibraryRange)
538
GraphNode
<RemoteResolveResult> newGraphNode = new(childResolvedLibraryDependency.LibraryRange)
603
GraphNode
<RemoteResolveResult> conflictingNode = new(childLibraryDependency.LibraryRange)
651
foreach (KeyValuePair<LibraryRangeIndex,
GraphNode
<RemoteResolveResult>> versionConflict in versionConflicts)
653
if (nodesById.TryGetValue(versionConflict.Key, out
GraphNode
<RemoteResolveResult>? selected))
672
if (!nodesById.TryGetValue(downgrade.FromParentLibraryRangeIndex, out
GraphNode
<RemoteResolveResult>? fromParentNode)
673
|| !nodesById.TryGetValue(downgrade.ToParentLibraryRangeIndex, out
GraphNode
<RemoteResolveResult>? toParentNode)
719
|| !nodesById.TryGetValue(resolvedDependencyGraphItem.LibraryRangeIndex, out
GraphNode
<RemoteResolveResult>? currentNode))
727
if (!nodesById.TryGetValue(parentLibraryRangeIndex, out
GraphNode
<RemoteResolveResult>? parentNode))
RestoreCommand\Diagnostics\IndexedRestoreTargetGraph.cs (1)
57
foreach (
var
node in cycles)
RestoreCommand\IRestoreTargetGraph.cs (1)
52
IEnumerable<
GraphNode
<RemoteResolveResult>> Graphs { get; }
RestoreCommand\LockFileBuilder.cs (18)
523
HashSet<
GraphNode
<RemoteResolveResult>> visitedNodes = new HashSet<
GraphNode
<RemoteResolveResult>>();
524
Queue<
GraphNode
<RemoteResolveResult>> queue = new Queue<
GraphNode
<RemoteResolveResult>>();
526
foreach (
GraphNode
<RemoteResolveResult> rootNode in targetGraph.Graphs)
530
foreach (
GraphNode
<RemoteResolveResult> node in rootNode.InnerNodes)
553
foreach (
GraphNode
<RemoteResolveResult> dependencyNode in EnumerateNodesForDependencyChecks(visitedNodes, queue, rootNode, node))
598
/// <param name="visitedNodes">Reusable <see cref="HashSet{
GraphNode
{T}}" /> for graph traversal algorithm.</param>
599
/// <param name="queue">Reusable <see cref="Queue{
GraphNode
{T}}" /> for graph traversal algorithm.</param>
600
/// <param name="rootNode">The <see cref="
GraphNode
{TItem}" /> to know which nodes are first level inner nodes.</param>
601
/// <param name="graphNode">The <see cref="
GraphNode
{TItem}" /> to enumerate the parent nodes of.</param>
603
private static IEnumerable<
GraphNode
<T>> EnumerateNodesForDependencyChecks<T>(HashSet<
GraphNode
<T>> visitedNodes, Queue<
GraphNode
<T>> queue,
GraphNode
<T> rootNode,
GraphNode
<T> graphNode)
612
var
node = queue.Dequeue();
618
foreach (
var
parentNode in node.ParentNodes)
RestoreCommand\ProjectRestoreCommand.cs (1)
285
var graphs = new List<
GraphNode
<RemoteResolveResult>>
RestoreCommand\RestoreCommand.cs (6)
625
var restoreTargetGraph = RestoreTargetGraph.Create(_request.Project.RuntimeGraph, Enumerable.Empty<
GraphNode
<RemoteResolveResult>>(), contextForProject, frameworkRuntimePairs[i].TargetAlias, frameworkRuntimePairs[i].Framework, frameworkRuntimePairs[i].RuntimeIdentifier);
1640
foreach (
var
cycle in graph.AnalyzeResult.Cycles)
1714
var
downgraded = downgrade.DowngradedFrom;
1715
var
downgradedBy = downgrade.DowngradedTo;
1910
allGraphs.Add(RestoreTargetGraph.Create(_request.Project.RuntimeGraph, Enumerable.Empty<
GraphNode
<RemoteResolveResult>>(), context, frameworkRuntimePair.TargetAlias, frameworkRuntimePair.Framework, frameworkRuntimePair.RuntimeIdentifier));
2076
graphs.Add(RestoreTargetGraph.Create(_request.Project.RuntimeGraph, Enumerable.Empty<
GraphNode
<RemoteResolveResult>>(), context, frameworkRuntimePair.TargetAlias, frameworkRuntimePair.Framework, frameworkRuntimePair.RuntimeIdentifier));
RestoreCommand\RestoreTargetGraph.cs (4)
47
public IEnumerable<
GraphNode
<RemoteResolveResult>> Graphs { get; }
71
IEnumerable<
GraphNode
<RemoteResolveResult>> graphs,
114
IEnumerable<
GraphNode
<RemoteResolveResult>> graphs,
128
foreach (
var
graph in graphs)
RestoreCommand\Utility\BuildAssetsUtils.cs (1)
560
foreach (
var
projectGraph in targetGraph.Graphs)
RestoreCommand\Utility\IncludeFlagUtils.cs (4)
101
foreach (
var
graph in targetGraph.Graphs)
103
foreach (
var
root in graph.InnerNodes.Where(n => !n.Item.IsCentralTransitive))
185
GraphNode
<RemoteResolveResult> parent,
186
GraphNode
<RemoteResolveResult> child)
NuGet.DependencyResolver.Core (141)
GraphModel\AnalyzeResult.cs (2)
14
public List<
GraphNode
<TItem>> Cycles { get; }
20
Cycles = new List<
GraphNode
<TItem>>();
GraphModel\DowngradeResult.cs (2)
7
public
GraphNode
<TItem> DowngradedFrom { get; set; }
8
public
GraphNode
<TItem> DowngradedTo { get; set; }
GraphModel\GraphNode.cs (9)
24
InnerNodes = hasInnerNodes ? new List<
GraphNode
<TItem>>() : EmptyList;
25
ParentNodes = hasParentNodes ? new List<
GraphNode
<TItem>>() : EmptyList;
29
internal static readonly IList<
GraphNode
<TItem>> EmptyList = Array.Empty<
GraphNode
<TItem>>();
32
public
GraphNode
<TItem> OuterNode { get; set; }
33
public IList<
GraphNode
<TItem>> InnerNodes { get; set; }
39
public IList<
GraphNode
<TItem>> ParentNodes { get; }
72
if (InnerNodes is List<
GraphNode
<TItem>> innerList)
82
InnerNodes = new List<
GraphNode
<TItem>>(additionalSpace);
GraphModel\GraphOperations.cs (95)
32
public static AnalyzeResult<RemoteResolveResult> Analyze(this
GraphNode
<RemoteResolveResult> root)
57
GraphNode
<RemoteResolveResult> resultToCheck = d.DowngradedFrom.OuterNode;
73
this
GraphNode
<RemoteResolveResult> root,
75
List<
GraphNode
<RemoteResolveResult>> cycles)
99
private static void WalkTreeCheckCycleAndNearestWins(CyclesAndDowngrades context,
GraphNode
<RemoteResolveResult> node)
144
for (
var
n = node.OuterNode; n != null; n = n.OuterNode)
150
var
sideNode = innerNodes[i];
186
public static string GetPath<TItem>(this
GraphNode
<TItem> node)
189
var
current = node;
203
public static string GetPathWithLastRange<TItem>(this
GraphNode
<TItem> node)
206
var
current = node;
220
public static
GraphNode
<TItem> Path<TItem>(this
GraphNode
<TItem> node, params string[] path)
224
GraphNode
<TItem> childNode = null;
229
var
candidateNode = innerNodes[i];
252
public static string GetIdAndRange<TItem>(this
GraphNode
<TItem> node)
277
public static string GetIdAndVersionOrRange<TItem>(this
GraphNode
<TItem> node)
305
public static string GetId<TItem>(this
GraphNode
<TItem> node)
316
public static NuGetVersion GetVersionOrDefault<TItem>(this
GraphNode
<TItem> node)
328
public static VersionRange GetVersionRange<TItem>(this
GraphNode
<TItem> node)
336
public static bool IsPackage<TItem>(this
GraphNode
<TItem> node)
348
private static bool TryResolveConflicts<TItem>(this
GraphNode
<TItem> root, List<VersionConflictResult<TItem>> versionConflicts)
360
Func<
GraphNode
<TItem>, bool> skipNode = null;
405
private static void WalkTreeDectectConflicts<TItem>(
GraphNode
<TItem> node, ConflictsAndAccepted<TItem> context)
421
var
childNode = innerNodes[i];
422
GraphNode
<TItem> acceptedNode;
452
private static WalkState WalkTreeMarkAmbiguousNodes<TItem>(
GraphNode
<TItem> node, WalkState state, Tracker<TItem> context)
484
private static bool WalkTreeRejectNodesOfRejectedNodes<TItem>(bool state,
GraphNode
<TItem> node, Tracker<TItem> context)
497
private static bool WalkTreeAcceptOrRejectNodes<TItem>(TrackerAndAccepted<TItem> context, bool state,
GraphNode
<TItem> node)
529
private static TState ForEachGlobalState<TItem, TState>(this
GraphNode
<TItem> root, TState state, Func<
GraphNode
<TItem>, TState, TState> visitor, Func<
GraphNode
<TItem>, bool> skipNode = null)
537
var
work = queue.Dequeue();
551
private static void ForEach<TItem, TState, TContext>(this
GraphNode
<TItem> root, TState state, Func<
GraphNode
<TItem>, TState, TContext, TState> visitor, TContext context, Func<
GraphNode
<TItem>, bool> skipNode = null)
571
public static void ForEach<TItem>(this IEnumerable<
GraphNode
<TItem>> roots, Action<
GraphNode
<TItem>> visitor)
582
var
node = queue.Dequeue();
592
private static void ForEach<TItem>(this
GraphNode
<TItem> root, Action<
GraphNode
<TItem>> visitor, Func<
GraphNode
<TItem>, bool> skipNode)
600
var
node = queue.Dequeue();
612
public static void ForEach<TItem>(this
GraphNode
<TItem> root, Action<
GraphNode
<TItem>> visitor)
617
private static void ForEach<TItem, TContext>(this
GraphNode
<TItem> root, Action<
GraphNode
<TItem>, TContext> visitor, TContext context, Func<
GraphNode
<TItem>, bool> skipNode)
625
var
node = queue.Dequeue();
637
public static void ForEach<TItem, TContext>(this
GraphNode
<TItem> root, Action<
GraphNode
<TItem>, TContext> visitor, TContext context)
642
private static void AddInnerNodesToQueue<TItem, TState>(IList<
GraphNode
<TItem>> innerNodes, Queue<NodeWithState<TItem, TState>> queue, TState innerState)
647
var
innerNode = innerNodes[i];
652
private static void AddInnerNodesToQueue<TItem>(IList<
GraphNode
<TItem>> innerNodes, Queue<
GraphNode
<TItem>> queue)
657
var
innerNode = innerNodes[i];
663
private static Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>> _tempDowngrades;
665
public static Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>> RentDowngradesDictionary()
674
return new Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>>();
677
public static void ReleaseDowngradesDictionary(Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>> dictionary)
718
private static Queue<
GraphNode
<TItem>> _queue;
720
private static Dictionary<string,
GraphNode
<TItem>> _dictionary;
724
public static Queue<
GraphNode
<TItem>> RentQueue()
733
return new Queue<
GraphNode
<TItem>>();
736
public static void ReleaseQueue(Queue<
GraphNode
<TItem>> queue)
766
public static Dictionary<string,
GraphNode
<TItem>> RentDictionary()
775
return new Dictionary<string,
GraphNode
<TItem>>(StringComparer.OrdinalIgnoreCase);
778
public static void ReleaseDictionary(Dictionary<string,
GraphNode
<TItem>> dictionary)
790
public
GraphNode
<TItem> Node;
796
public static NodeWithState<TItem, TState> Create<TItem, TState>(
GraphNode
<TItem> node, TState state)
809
public Dictionary<string,
GraphNode
<TItem>> AcceptedLibraries;
811
private static ConflictsAndAccepted<TItem> CreateState<TItem>(List<VersionConflictResult<TItem>> versionConflicts, Dictionary<string,
GraphNode
<TItem>> acceptedLibraries)
823
public Dictionary<string,
GraphNode
<TItem>> AcceptedLibraries;
826
private static TrackerAndAccepted<TItem> CreateState<TItem>(Tracker<TItem> tracker, Dictionary<string,
GraphNode
<TItem>> acceptedLibraries)
837
public List<
GraphNode
<RemoteResolveResult>> Cycles;
838
public Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>> Downgrades;
841
private static CyclesAndDowngrades CreateState(List<
GraphNode
<RemoteResolveResult>> cycles, Dictionary<
GraphNode
<RemoteResolveResult>,
GraphNode
<RemoteResolveResult>> downgrades)
850
private static void DetectAndMarkAmbiguousCentralTransitiveDependencies<TItem>(Tracker<TItem> tracker, List<
GraphNode
<TItem>> centralTransitiveNodes)
880
private static void RejectCentralTransitiveBecauseOfRejectedParents<TItem>(this
GraphNode
<TItem> root, Tracker<TItem> tracker, List<
GraphNode
<TItem>> centralTransitiveNodes)
882
HashSet<
GraphNode
<TItem>> internalContext = new HashSet<
GraphNode
<TItem>>();
909
foreach (
var
node in internalContext)
918
private static bool WalkTreeRejectNodesOfRejectedNodes<TItem>(bool state,
GraphNode
<TItem> node, HashSet<
GraphNode
<TItem>> context)
936
public static void Dump<TItem>(this
GraphNode
<TItem> root, Action<string> write)
942
private static void DumpChildren<TItem>(
GraphNode
<TItem> root, Action<string> write, int level)
952
private static void DumpNode<TItem>(
GraphNode
<TItem> node, Action<string> write, int level)
GraphModel\VersionConflictResult.cs (2)
8
public
GraphNode
<TItem> Selected { get; set; }
9
public
GraphNode
<TItem> Conflicting { get; set; }
Remote\RemoteDependencyWalker.cs (31)
30
public async Task<
GraphNode
<RemoteResolveResult>> WalkAsync(LibraryRange library, NuGetFramework framework, string runtimeIdentifier, RuntimeGraph runtimeGraph, bool recursive)
33
var
rootNode = await CreateGraphNodeAsync(
52
var transitiveCentralPackageVersionNodes = new List<
GraphNode
<RemoteResolveResult>>();
69
private async ValueTask<
GraphNode
<RemoteResolveResult>> CreateGraphNodeAsync(
101
GraphNode
<RemoteResolveResult> rootNode = new GraphNode<RemoteResolveResult>(libraryRange, rootHasInnerNodes, hasParentNodes)
121
GraphNode
<RemoteResolveResult> node = currentState.GraphNode;
197
var
dependencyNode = new GraphNode<RemoteResolveResult>(dependency.LibraryRange)
222
GraphNode
<RemoteResolveResult> newNode = new GraphNode<RemoteResolveResult>(graphNodeCreationData.LibraryRange, hasInnerNodes, false)
298
public static void MergeRuntimeDependencies(HashSet<LibraryDependency> runtimeDependencies,
GraphNode
<RemoteResolveResult> node)
364
GraphNode
<RemoteResolveResult> node,
573
GraphNode
<RemoteResolveResult> parentNode)
579
/// New <see cref="
GraphNode
{RemoteResolveResult}"/> will be created for each of the items in the <paramref name="transitiveCentralPackageVersions"/>
582
private async Task<
GraphNode
<RemoteResolveResult>> AddTransitiveCentralPackageVersionNodesAsync(
583
GraphNode
<RemoteResolveResult> rootNode,
590
GraphNode
<RemoteResolveResult> node = await CreateGraphNodeAsync(
621
private Dictionary<string, List<
GraphNode
<RemoteResolveResult>>> _transitiveCentralPackageVersions;
626
_transitiveCentralPackageVersions = new Dictionary<string, List<
GraphNode
<RemoteResolveResult>>>(StringComparer.OrdinalIgnoreCase);
629
internal void Add(LibraryDependency centralPackageVersionDependency,
GraphNode
<RemoteResolveResult> parentNode)
635
list = new List<
GraphNode
<RemoteResolveResult>>();
650
internal void AddParentsToNode(
GraphNode
<RemoteResolveResult> node)
654
List<
GraphNode
<RemoteResolveResult>> graphNodes = _transitiveCentralPackageVersions[node.Item.Key.Name];
683
/// The <see cref="
GraphNode
{TItem}"/> that is currently being processed.
685
public readonly
GraphNode
<RemoteResolveResult> GraphNode;
688
/// The dependencies of the current <see cref="
GraphNode
{TItem}"/> that will be updated as a final step.
693
/// Where we are when processing dependencies. Also used to flag where we are in processing the current <see cref="
GraphNode
{TItem}"/>.
698
/// The <see cref="GraphEdge"/> for the current <see cref="
GraphNode
{TItem}"/>.
703
GraphNode
<RemoteResolveResult> graphNode,
716
/// Stores data that is required to create a <see cref="
GraphNode
{TItem}"/> for later use.
721
/// A <see cref="Task{TResult}"/> that represents the retrieval of the necessary <see cref="GraphItem{TItem}"/> to complete construction of the <see cref="
GraphNode
{TItem}"/>.
731
/// The <see cref="LibraryRange"/> of this <see cref="
GraphNode
{TItem}"/> to construct.
736
/// Edge pointing to the parent <see cref="
GraphNode
{TItem}"/>.