示例#1
0
        public static bool ShutDownManager(string friendlyName)
        {
            var ret = false;

            Logger.DebugWithLineNumber("Started.");

            if (AppDomainManagerTasks != null && AppDomainManagerTasks.Any())
            {
                AppDomainManagerTask managerToDispose;

                ret = AppDomainManagerTasks.TryRemove(friendlyName, out managerToDispose);


                if (ret)
                {
                    Logger.DebugWithLineNumber("Start disposing manager (appdomain) with friendly name :" + friendlyName);

                    managerToDispose.Dispose();

                    Logger.DebugWithLineNumber("Finished to dispose manager (appdomain) with friendly name :" + friendlyName);
                }
            }

            Logger.DebugWithLineNumber("Finished.");

            return(ret);
        }
示例#2
0
        public static void StartNewManager(out string friendlyname)
        {
            NumberOfManagersToStart++;

            var portNumber =
                Settings.Default.ManagerEndpointPortNumberStart + (NumberOfManagersToStart - 1);
            var allowedDowntimeSeconds = Settings.Default.AllowedDowntimeSeconds;

            Uri uri;

            var copiedManagerConfigurationFile =
                CopyManagerConfigurationFile(ManagerConfigurationFile,
                                             NumberOfManagersToStart,
                                             portNumber,
                                             allowedDowntimeSeconds,
                                             out uri);

            CopiedManagerConfigurationFiles.Add(uri,
                                                copiedManagerConfigurationFile);

            var appDomainManagerTask =
                new AppDomainManagerTask(_buildMode,
                                         DirectoryManagerAssemblyLocationFullPath,
                                         copiedManagerConfigurationFile,
                                         Settings.Default.ManagerAssemblyName);

            AppDomainManagerTasks.AddOrUpdate(appDomainManagerTask.GetAppDomainUniqueId(),
                                              appDomainManagerTask,
                                              (s, task) => appDomainManagerTask);

            RoundRobin.AddHost(uri);

            Logger.DebugWithLineNumber("Start: AppDomainManagerTask.StartTask");

            appDomainManagerTask.StartTask(new CancellationTokenSource());

            Logger.DebugWithLineNumber("Finished: AppDomainManagerTask.StartTask");

            friendlyname = appDomainManagerTask.GetAppDomainUniqueId();
        }