/// <summary> /// Closes the Session /// </summary> public IXmppSession Close() { if (connection != null && (connection.State == XmppConnectionState.Opening || connection.State == XmppConnectionState.Open)) { try { State = XmppSessionState.LoggingOut; if (connection.State == XmppConnectionState.Open) { // Save session configuration AvatarStorage.Save(); // Change presence to unavailable SetUnavailable(); // Clear all chats chats.Clear(); } // Close connection connection.Close(); // Unwire XmppConnection events Unsubscribe(); } catch { } finally { State = XmppSessionState.LoggedOut; } } return(this); }