OfflineServer.MainWindow.MetroWindow_Closing C# (CSharp) Method

MetroWindow_Closing() private method

private MetroWindow_Closing ( object sender, CancelEventArgs e ) : void
sender object
e CancelEventArgs
return void
        private void MetroWindow_Closing(object sender, CancelEventArgs e)
        {
            log.Info("Shutting down offline server.");

            if (AddonManagerTalk.isAddonManagerRunning || AddonManagerTalk.isWaitingForClient)
            {
                log.Info("Closing existing AddonManager IPC Talk.");
                Access.addonManagerTalk.notify(IPCPacketType.offlineServerClosing);
                Access.addonManagerTalk.shutdown();
            }

            if (Access.sHttp != null && Access.sXmpp != null)
            {
                // https://github.com/foxglovesec/Potato/blob/master/source/NHttp/NHttp/HttpServer.cs#L261
                Access.sHttp.nServer.Stop();
                Access.sHttp.nServer.Dispose();
                log.Info("Shutdown of HttpServer has been completed.");

                Access.sXmpp.shutdown();
            }

            NfswSession.dbConnection.Close();
            NfswSession.dbConnection.Dispose();

            SessionManager.getSessionFactory().Close();

            log.Info("Killing main thread.");
            Application.Current.Shutdown();
        }
    }