private void On_Join_Lobby_Failure( ELobbyID lobby_id, EPersistenceID player_id, EMessageRequestID request_id, EJoinLobbyFailureReason reason )
        {
            CLog.Log( ELoggingChannel.Lobby, ELogLevel.Medium, String.Format( "Player {0} failed to join lobby {1} because of {2}.",
                                                                                                    CConnectedPlayerManager.Get_Player_Log_Name( player_id ),
                                                                                                    Get_Lobby_Log_Description( lobby_id ),
                                                                                                    reason.ToString() ) );

            CConnectedPlayer player = CConnectedPlayerManager.Instance.Get_Player_By_Persistence_ID( player_id );
            if ( player != null )
            {
                player.Change_State( EConnectedPlayerState.Chat_Idle );
            }

            if ( !CConnectedPlayerManager.Instance.Is_Connected( player_id ) )
            {
                return;
            }

            CJoinLobbyFailure join_response = new CJoinLobbyFailure( request_id, reason );
            CServerMessageRouter.Send_Message_To_Player( join_response, player_id );
        }
 // Construction
 public CJoinLobbyFailure( EMessageRequestID request_id, EJoinLobbyFailureReason reason )
     : base(request_id)
 {
     Reason = reason;
 }