private int AttemptCreateNode(INodeProvider nodeProvider, NodeConfiguration nodeConfiguration) { // If no provider was passed in, we obviously can't create a node. if (nodeProvider == null) { ErrorUtilities.ThrowInternalError("No node provider provided."); return(InvalidNodeId); } // Are there any free slots on this provider? if (nodeProvider.AvailableNodes == 0) { return(InvalidNodeId); } // Assign a global ID to the node we are about to create. int nodeId; if (nodeProvider is NodeProviderInProc) { nodeId = _inprocNodeId; } else { nodeId = _nextNodeId; _nextNodeId++; } NodeConfiguration configToSend = nodeConfiguration.Clone(); configToSend.NodeId = nodeId; // Create the node and add it to our mapping. bool createdNode = nodeProvider.CreateNode(nodeId, this, configToSend); if (!createdNode) { return(InvalidNodeId); } _nodeIdToProvider.Add(nodeId, nodeProvider); return(nodeId); }
/// <summary> /// Attempts to create a node on the specified machine using the specified provider. /// </summary> /// <param name="nodeProvider">The provider used to create the node.</param> /// <returns>The id of the node created.</returns> private int AttemptCreateNode(INodeProvider nodeProvider, NodeConfiguration nodeConfiguration) { // If no provider was passed in, we obviously can't create a node. if (null == nodeProvider) { ErrorUtilities.ThrowInternalError("No node provider provided."); return InvalidNodeId; } // Are there any free slots on this provider? if (nodeProvider.AvailableNodes == 0) { return InvalidNodeId; } // Assign a global ID to the node we are about to create. int nodeId = InvalidNodeId; if (nodeProvider is NodeProviderInProc) { nodeId = _inprocNodeId; } else { nodeId = _nextNodeId; _nextNodeId++; } NodeConfiguration configToSend = nodeConfiguration.Clone(); configToSend.NodeId = nodeId; // Create the node and add it to our mapping. bool createdNode = nodeProvider.CreateNode(nodeId, this, configToSend); if (!createdNode) { return InvalidNodeId; } _nodeIdToProvider.Add(nodeId, nodeProvider); return nodeId; }