public ServerLifecycleManager(StartupConfiguration startupConfiguration) { SetApplicationDirectory(); _writer = startupConfiguration.Writer; _serverEnvironmentPreparer = startupConfiguration.ServerEnvironmentPreparer; _startUpDirectory = startupConfiguration.Directory; _startupResourceCatalogFactory = startupConfiguration.ResourceCatalogFactory; _ipcClient = startupConfiguration.IpcClient; _assemblyLoader = startupConfiguration.AssemblyLoader; _pulseLogger = new PulseLogger(60000).Start(); _pulseTracker = new PulseTracker(TimeSpan.FromDays(1).TotalMilliseconds).Start(); _serverEnvironmentPreparer.PrepareEnvironment(); _startWebServer = startupConfiguration.StartWebServer; _webServerConfiguration = startupConfiguration.WebServerConfiguration; _loggingProcessMonitor = startupConfiguration.LoggingServiceMonitor; _loggingProcessMonitor.OnProcessDied += (e) => _writer.WriteLine("logging service exited"); _queueProcessMonitor = startupConfiguration.QueueWorkerMonitor; _queueProcessMonitor.OnProcessDied += (config) => _writer.WriteLine($"queue process died: {config.Name}({config.Id})"); _webSocketPool = startupConfiguration.WebSocketPool; SecurityIdentityFactory.Set(startupConfiguration.SecurityIdentityFactory); }
void Dispose(bool disposing) { if (disposing) { CleanupServer(); } if (_timer != null) { _timer.Dispose(); _timer = null; } if (_pulseLogger != null) { _pulseLogger.Dispose(); } if (_pulseTracker != null) { _pulseTracker.Dispose(); } if (_serverEnvironmentPreparer != null) { _serverEnvironmentPreparer.Dispose(); _serverEnvironmentPreparer = null; } _startWebServer = null; }
internal void CleanupServer() { try { _queueProcessMonitor.Shutdown(); _hangfireServerMonitor.Shutdown(); if (_startWebServer != null) { _startWebServer.Dispose(); _startWebServer = null; } if (_ipcClient != null) { _ipcClient.Dispose(); _ipcClient = null; } DebugDispatcher.Instance.Shutdown(); } catch (Exception ex) { Dev2Logger.Error("Dev2.ServerLifecycleManager", ex, GlobalConstants.WarewolfError); } }