/// <summary>
 /// Called when a logout has completed.
 /// This method gets called before the connection state is updated and before the corresponding event.
 /// </summary>
 void Session_LogoutComplete(object sender, SessionEventArgs e)
 {
     Log("Logged out. Connection state: " + ((ISession)sender).ConnectionState.ToString());
 }
        /// <summary>
        /// Called when the connection state is updated.
        /// </summary>
        void Session_ConnectionStateUpdated(object sender, SessionEventArgs e)
        {
            Log("Connection state: " + ((ISession)sender).ConnectionState.ToString());

            // TODO: if state is disconnected, we should reconnect
            // If state is loggedOut, logout was forced, so we do nothing
        }
 /// <summary>
 /// Called when a successfull login has occured.
 /// This method gets called before the connection state is updated and before the corresponding event.
 /// </summary>
 void Session_LoginComplete(object sender, SessionEventArgs e)
 {
     Log("Login complete. Connection status is " + ((ISession)sender).ConnectionState.ToString());
 }
 /// <summary>
 /// Called when a connection error has occured.
 /// This method gets called before the connection state is updated and before the corresponding event.
 /// </summary>
 void Session_ConnectionError(object sender, SessionEventArgs e)
 {
     Log("Connection error. Connection state: " + ((ISession)sender).ConnectionState.ToString() + ". Error: " + e.Status.ToString());
 }