| File: BackEnd\Components\Communications\INodeProvider.cs | Web Access |
| Project: src\msbuild\src\Build\Microsoft.Build.csproj (Microsoft.Build) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.Diagnostics; namespace Microsoft.Build.BackEnd { /// <summary> /// The type of nodes provided by the node provider. /// </summary> internal enum NodeProviderType { /// <summary> /// The provider provides the in-proc node. /// </summary> InProc, /// <summary> /// The provider provides out-of-proc nodes. /// </summary> OutOfProc, /// <summary> /// The provider provides remote nodes. /// </summary> Remote } /// <summary> /// This interface represents a collection of nodes in the system. It provides methods to /// enumerate active nodes as well as send data and receive events from those nodes. /// </summary> internal interface INodeProvider : IBuildComponent { #region Properties /// <summary> /// The type of nodes provided by this node provider. /// </summary> NodeProviderType ProviderType { get; } /// <summary> /// The number of nodes this provider can create. /// </summary> int AvailableNodes { get; } #endregion #region Methods /// <summary> /// Requests that a new node be created on the specified machine. /// </summary> /// <param name="nextNodeId">The id to assign to the first created node. Resulting nodes ids will be in range [nextNodeId, nextNodeId + numberOfNodesToCreate - 1]</param> /// <param name="packetFactory"> /// The packet factory used to create packets when data is /// received on this node. /// </param> /// <param name="configurationFactory">NodeConfiguration factory of particular node</param> /// <param name="numberOfNodesToCreate">Required number of nodes to create</param> /// <returns>Array of NodeInfo of successfully created nodes</returns> IList<NodeInfo> CreateNodes(int nextNodeId, INodePacketFactory packetFactory, Func<NodeInfo, NodeConfiguration> configurationFactory, int numberOfNodesToCreate); /// <summary> /// Sends data to a specific node. /// </summary> /// <param name="node">The node to which data should be sent.</param> /// <param name="packet">The packet to be sent.</param> void SendData(int node, INodePacket packet); /// <summary> /// Shuts down all of the connected, managed nodes. This call will not return until all nodes are shut down. /// </summary> /// <param name="enableReuse">Flag indicating if nodes should prepare for reuse.</param> void ShutdownConnectedNodes(bool enableReuse); /// <summary> /// Shuts down all of the managed nodes. This call will not return until all nodes are shut down. /// </summary> void ShutdownAllNodes(); IEnumerable<Process> GetProcesses(); #endregion } }