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();
}
}