Exemple #1
0
        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);
        }
Exemple #2
0
        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 + " )");
            }
        }