/// <summary>
    /// 创建房间
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnCreateRoom(ByteString msg)
    {
        Request request = new Request();

        ByteUtils.ByteStringToObject(request, msg);

        Reply reply = new Reply()
        {
            UserID = request.UserID,
            GameID = request.GameID,
            RoomID = request.RoomID,
            Errno  = ErrorCode.Ok,
            ErrMsg = "OnCreateRoom success"
        };

        ulong roomID = request.RoomID;
        Room  room   = roomMgr.GetRoom(roomID);

        if (room == null)
        {
            Logger.Info("DoCreateRoomV32, create Room, roomId={0}", request.RoomID);

            room = roomMgr.CreateRoom(request.RoomID, request.GameID);
        }

        Logger.Info("OnCreateRoom start, userId={0}, gameId={1}, roomId={2}", request.UserID, request.GameID, request.RoomID);

        CreateExtInfo createEx = new CreateExtInfo();

        ByteUtils.ByteStringToObject(createEx, request.CpProto);
        Logger.Info("OnCreateRoom CreateExtInfo, userId={0}, roomId={1}, state={2}, CreateTime={3}", createEx.UserID, createEx.RoomID, createEx.State, createEx.CreateTime);

        return(reply);
    }