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 );
        }
        private void Handle_Create_Failure( CCreateLobbyFailure message )
        {
            switch ( message.Reason )
            {
                case ECreateLobbyFailureReason.Invalid_Config_Data:
                    CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Lobby_Create_Invalid_Config_Data );
                    break;

                case ECreateLobbyFailureReason.Invalid_State_To_Create:
                    CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Lobby_Create_Invalid_Creator_State );
                    break;
            }
        }