public static bool ShutDownNode(string friendlyName) { var ret = false; Logger.DebugWithLineNumber("Started."); if (AppDomainNodeTasks != null && AppDomainNodeTasks.Any()) { AppDomainNodeTask nodeToDispose; ret = AppDomainNodeTasks.TryRemove(friendlyName, out nodeToDispose); if (nodeToDispose != null) { Logger.DebugWithLineNumber("Start to dispose appdomain with friendly name :" + friendlyName); nodeToDispose.Dispose(); Logger.DebugWithLineNumber("Finished to dispose appdomain with friendly name :" + friendlyName); ret = true; } } Logger.DebugWithLineNumber("Finished."); return(ret); }
public static void StartNewNode(out string friendlyName) { friendlyName = null; NumberOfNodesToStart++; if (NumberOfNodesToStart > 0) { Logger.DebugWithLineNumber("Start creating node configuration file for node id : " + NumberOfNodesToStart); var nodeConfig = CreateNodeConfigurationFile(NumberOfNodesToStart); friendlyName = nodeConfig.Name; Logger.DebugWithLineNumber("AppDomainNodeTask"); var appDomainNodeTask = new AppDomainNodeTask(_buildMode, DirectoryNodeAssemblyLocationFullPath, nodeConfig, Settings.Default.NodeAssemblyName); Logger.DebugWithLineNumber("Start : AppDomainNodeTask.StartTask"); appDomainNodeTask.StartTask(new CancellationTokenSource()); Logger.DebugWithLineNumber("Finished : AppDomainNodeTask.StartTask"); var appDomainUniqueId = appDomainNodeTask.GetAppDomainUniqueId(); AppDomainNodeTasks.AddOrUpdate(appDomainUniqueId, appDomainNodeTask, (s, task) => appDomainNodeTask); Logger.DebugWithLineNumber("Finished creating node configuration file for node : ( id, config file ) : ( " + NumberOfNodesToStart + ", " + nodeConfig.FullName + " )"); } }