private void On_Create_Lobby_Failure( ELobbyID lobby_id, EPersistenceID player_id, EMessageRequestID request_id, ECreateLobbyFailureReason reason )
        {
            CLog.Log( ELoggingChannel.Lobby, ELogLevel.Medium, String.Format( "{0}'s lobby {1} failed to create because {2}.",
                                                                                                    CConnectedPlayerManager.Get_Player_Log_Name( player_id ),
                                                                                                    Get_Lobby_Log_Description( lobby_id ),
                                                                                                    reason.ToString() ) );

            Shutdown_Lobby( lobby_id, ELobbyDestroyedReason.Creation_Failure );

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

            CCreateLobbyFailure create_response = new CCreateLobbyFailure( request_id, reason );
            CServerMessageRouter.Send_Message_To_Player( create_response, player_id );
        }
 // Construction
 public CCreateLobbyFailure( EMessageRequestID request_id, ECreateLobbyFailureReason reason )
     : base(request_id)
 {
     Reason = reason;
 }