public override IMessage OnHotelConnect(ByteString msg)
    {
        Connect connect = new Connect();

        ByteUtils.ByteStringToObject(connect, msg);
        Logger.Info("OnHotelConnect, gameID:{0}, roomID:{1}", connect.GameID, connect.RoomID);

        return(new ConnectAck()
        {
            Status = (UInt32)ErrorCode.Ok
        });
    }
    public override IMessage OnHotelCloseConnect(ByteString msg)
    {
        CloseConnect close = new CloseConnect();

        ByteUtils.ByteStringToObject(close, msg);
        Logger.Info("CloseConnect, gameID:{0} roomID:{1}", close.GameID, close.RoomID);

        baseServer.DeleteStreamMap(close.RoomID);

        return(new CloseConnectAck()
        {
            Status = (UInt32)ErrorCode.Ok
        });
    }
    /// <summary>
    /// 房间详情
    /// </summary>
    /// <param name="msg"></param>
    public override void OnRoomDetail(ByteString msg)
    {
        Request request = new Request();

        ByteUtils.ByteStringToObject(request, msg);

        RoomDetail roomDetail = new RoomDetail();

        ByteUtils.ByteStringToObject(roomDetail, request.CpProto);

        Logger.Info("OnRoomDetail, roomId={0}, state={1}, maxPlayer={2}, mode={3}, canWatch={4}, owner={5}",
                    roomDetail.RoomID, roomDetail.State, roomDetail.MaxPlayer, roomDetail.Mode, roomDetail.CanWatch, roomDetail.Owner);
        foreach (PlayerInfo player in roomDetail.PlayerInfos)
        {
            Logger.Info("player userId={0}", player.UserID);
        }
    }
Example #4
0
    private IMessage FrameDataNotify(ByteString message)
    {
        GSFrameDataNotify request = new GSFrameDataNotify();

        ByteUtils.ByteStringToObject(request, message);
        GSFrameBroadcastAck reply = new GSFrameBroadcastAck()
        {
            Status = (UInt32)ErrorCode.Ok
        };

        Dictionary <UInt32, FrameData> roomFrame;

        if (!roomFrames.TryGetValue(request.RoomID, out roomFrame))
        {
            roomFrame = new Dictionary <UInt32, FrameData>();
            roomFrames[request.RoomID] = roomFrame;
        }

        FrameData frame;

        if (!roomFrame.TryGetValue(request.FrameIdx, out frame))
        {
            frame = new FrameData()
            {
                GameID     = request.GameID,
                RoomID     = request.RoomID,
                FrameIndex = request.FrameIdx,
                FrameItems = new List <FrameItem>(),
            };
            roomFrame[request.FrameIdx] = frame;
        }

        FrameItem item = new FrameItem()
        {
            SrcUserID = request.SrcUid,
            CpProto   = request.CpProto,
            Timestamp = request.TimeStamp,
        };

        frame.FrameItems.Add(item);

        return(reply);
    }
    /// <summary>
    /// 加入房间Over
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnJoinOver(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 = "OnJoinOver success"
        };

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

        return(reply);
    }
    /// <summary>
    /// 设置房间自定义属性
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnSetRoomProperty(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 = "OnSetRoomProperty success"
        };
        string roomProperty = request.CpProto.ToStringUtf8();

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

        return(reply);
    }
    /// <summary>
    /// 房间详情
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnRoomDetail(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 = "OnRoomDetail success"
        };

        RoomDetail roomDetail = new RoomDetail();

        ByteUtils.ByteStringToObject(roomDetail, request.CpProto);

        Logger.Info("OnRoomDetail, roomId={0}, state={1}, maxPlayer={2}, mode={3}, canWatch={4}, owner={5}, roomProperty={6}",
                    roomDetail.RoomID, roomDetail.State, roomDetail.MaxPlayer, roomDetail.Mode, roomDetail.CanWatch, roomDetail.Owner, roomDetail.RoomProperty.ToStringUtf8());
        foreach (PlayerInfo player in roomDetail.PlayerInfos)
        {
            Logger.Info("player userId={0}", player.UserID);
        }
        foreach (BrigadeInfo brigade in roomDetail.Brigades)
        {
            Logger.Info("brigade brigadeId={0}", brigade.BrigadeID);
            foreach (TeamDetail team in brigade.Teams)
            {
                Logger.Info("team teamId={0}, password={1}, capacity={2}, mode={3}, visibility={4}, owner={5}",
                            team.TeamInfo.TeamID, team.TeamInfo.Password, team.TeamInfo.Capacity, team.TeamInfo.Mode, team.TeamInfo.Visibility, team.TeamInfo.Owner);
                foreach (PlayerInfo player in team.Player)
                {
                    Logger.Info("player userId={0}", player.UserID);
                }
            }
        }
        return(reply);
    }
Example #8
0
    private IMessage SetFrameSyncRateNotify(ByteString message)
    {
        GSSetFrameSyncRateNotify request = new GSSetFrameSyncRateNotify();

        ByteUtils.ByteStringToObject(request, message);
        GSSetFrameSyncRateAck reply = new GSSetFrameSyncRateAck()
        {
            Status = (UInt32)ErrorCode.Ok
        };

        msgHandler.OnHotelSetFrameSyncRate(new FrameSyncRate()
        {
            GameID     = request.GameID,
            RoomID     = request.RoomID,
            FrameRate  = request.FrameRate,
            FrameIndex = request.FrameIdx,
            Timestamp  = request.TimeStamp,
            EnableGS   = request.EnableGS,
        });

        return(reply);
    }
    /// <summary>
    /// 加入房间
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnJoinRoom(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 = "OnJoinRoom success"
        };

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

        if (room == null)
        {
            room = roomMgr.CreateRoom(request.RoomID, request.GameID);
        }
        RoomStatus status = room.AddPlayer(request.UserID);

        if (status != RoomStatus.AddPlayerOk)
        {
            reply.Errno  = ErrorCode.InternalServerError;
            reply.ErrMsg = "DoJoinRoomV32 failed, add player failed";
        }

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

        JoinExtInfo joinEx = new JoinExtInfo();

        ByteUtils.ByteStringToObject(joinEx, request.CpProto);
        Logger.Info("OnJoinRoom JoinExtInfo, userId={0}, roomId={1}, JoinType ={2}", joinEx.UserID, joinEx.RoomID, joinEx.JoinType);

        return(reply);
    }
Example #10
0
    public ReportAck Report(params MetricPoint[] points)
    {
        ReportAck rsp = new ReportAck();

        if (!enable)
        {
            Logger.Warn("Metrics is disabled");
            rsp.Status = 400;
            return(rsp);
        }

        PodMetrics podMetrics = new PodMetrics()
        {
            Meta = meta,
        };

        for (int i = 0; i < points.Length; i++)
        {
            podMetrics.Usages.Insert(i, points[i]);
        }

        Report req = new Report()
        {
            Metrics = podMetrics,
        };

        var reply = SendMsg(ByteUtils.ObjectToByteString(req), (UInt32)MetricCMD.Report);

        if (reply == null)
        {
            rsp.Status = 500;
        }
        else
        {
            ByteUtils.ByteStringToObject(rsp, reply.Message);
        }
        return(rsp);
    }
    /// <summary>
    /// 踢人
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnKickPlayer(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 = "OnKickPlayer success"
        };

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

        if (room == null)
        {
            string str = string.Format("DoKickPlayerV32 failed, not exist room, roomId={0}", request.RoomID);
            Logger.Warn(str);

            reply.Errno  = ErrorCode.InternalServerError;
            reply.ErrMsg = str;
        }
        else
        {
            Logger.Info("DoKickPlayerV32, roomId={0}, kickPlayerId={1}", request.RoomID, request.UserID);

            room.KickPlayer(request.UserID);
        }

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

        return(reply);
    }
Example #12
0
    /// <summary>
    /// 加入房间
    /// </summary>
    /// <param name="msg"></param>
    public override IMessage OnJoinRoom(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 = "OnJoinRoom success"
        };

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

        JoinExtInfo joinEx = new JoinExtInfo();

        ByteUtils.ByteStringToObject(joinEx, request.CpProto);
        Logger.Info("OnJoinRoom JoinExtInfo, userId={0}, roomId={1}, JoinType ={2}", joinEx.UserID, joinEx.RoomID, joinEx.JoinType);

        return(reply);
    }
Example #13
0
    /// <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"
        };

        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);
    }
Example #14
0
    private IMessage FrameSyncNotify(ByteString message)
    {
        GSFrameSyncNotify request = new GSFrameSyncNotify();

        ByteUtils.ByteStringToObject(request, message);
        GSFrameBroadcastAck reply = new GSFrameBroadcastAck()
        {
            Status = (UInt32)ErrorCode.Ok
        };

        Dictionary <UInt32, FrameData> roomFrame;

        if (roomFrames.TryGetValue(request.RoomID, out roomFrame))
        {
            FrameData frame;
            if (roomFrame.Remove(request.LastIdx, out frame))
            {
                frame.FrameWaitCount = roomFrame.Count;
                msgHandler.OnHotelFrameUpdate(frame);
            }
        }

        return(reply);
    }
    public override IMessage OnHotelBroadCast(ByteString msg)
    {
        HotelBroadcast broadcast = new HotelBroadcast();

        ByteUtils.ByteStringToObject(broadcast, msg);
        Logger.Info("HotelBroadcast start, userID:{0} gameID:{1} roomID:{2} cpProto:{3}", broadcast.UserID, broadcast.GameID, broadcast.RoomID, broadcast.CpProto.ToStringUtf8());

        HotelBroadcastAck broadcastAck = new HotelBroadcastAck()
        {
            UserID = broadcast.UserID, Status = (UInt32)ErrorCode.Ok
        };

        string cpValue = broadcast.CpProto.ToStringUtf8();
        var    obj     = JObject.Parse(cpValue);
        String action  = obj["action"].ToString();

        Logger.Info("请求数据: {0}", cpValue);
        Logger.Info("请求的action: {0}", action);
        if (action.Equals("gsReadyRsp"))
        {
            Room room = roomMgr.GetRoom(broadcast.RoomID);
            if (room.Ready(broadcast.UserID))
            {
                JObject data = new JObject();
                data["action"] = "gsStart";
                JArray array = new JArray();
                for (int i = 0; i < 3; i++)
                {
                    RewardItem item      = room.CreateRrewardItem();
                    JObject    rewardObj = new JObject();
                    rewardObj["x"] = item.x;
                    rewardObj["y"] = item.y;
                    array.Add(rewardObj);
                }
                data["rewards"] = array;
                ByteString     cpProto = JsonUtils.EncodetoByteString(data);
                PushToHotelMsg pushMsg = new PushToHotelMsg()
                {
                    PushType = PushMsgType.UserTypeExclude,
                    GameID   = broadcast.GameID,
                    RoomID   = broadcast.RoomID,
                    CpProto  = cpProto,
                };

                PushToHotel(broadcast.RoomID, pushMsg);
            }
        }

        if (action.Equals("gsReward"))
        {
            int  rewardID = (int)obj["rewardID"];
            int  userID   = (int)obj["userID"];
            Room room     = roomMgr.GetRoom(broadcast.RoomID);
            bool eated    = room.GetReward(rewardID);
            if (eated)
            {
                JObject data = new JObject();
                data["action"]   = "gsRewardRsp";
                data["rewardID"] = rewardID;
                data["userID"]   = userID;
                ByteString     cpProto = JsonUtils.EncodetoByteString(data);
                PushToHotelMsg pushMsg = new PushToHotelMsg()
                {
                    PushType = PushMsgType.UserTypeExclude,
                    GameID   = broadcast.GameID,
                    RoomID   = broadcast.RoomID,
                    CpProto  = cpProto,
                };

                PushToHotel(broadcast.RoomID, pushMsg);
            }
        }

        if (action.Equals("gsScore"))
        {
            int  score     = (int)obj["score"];
            int  rewardNum = (int)obj["rewardNum"];
            bool roomOwner = (bool)obj["roomOwner"];
            Room room      = roomMgr.GetRoom(broadcast.RoomID);
            if (roomOwner)
            {
                JArray robotScore = (JArray)obj["robotScore"];
                for (int i = 0; i < robotScore.Count; i++)
                {
                    JObject item           = (JObject)robotScore[i];
                    int     robotuserid    = (int)item["userid"];
                    int     robotscore     = (int)item["score"];
                    int     robotrewardNum = (int)item["rewardNum"];
                    room.ReportScore((uint)robotuserid, robotscore, robotrewardNum);
                }
            }

            bool flag = room.ReportScore(broadcast.UserID, score, rewardNum);
            if (flag)
            {
                JObject data = new JObject();
                data["action"] = "gsResult";;
                JArray resultList = new JArray();
                for (int i = 0; i < room.playerResults.Count; i++)
                {
                    Player  player       = room.playerResults[i];
                    JObject playerResult = new JObject();
                    playerResult["userid"]    = player.Uid;
                    playerResult["rewardNum"] = player.Attr_1;
                    resultList.Add(playerResult);
                }
                data["resultList"] = resultList;
                ByteString     cpProto = JsonUtils.EncodetoByteString(data);
                PushToHotelMsg pushMsg = new PushToHotelMsg()
                {
                    PushType = PushMsgType.UserTypeExclude,
                    GameID   = broadcast.GameID,
                    RoomID   = broadcast.RoomID,
                    CpProto  = cpProto,
                };

                PushToHotel(broadcast.RoomID, pushMsg);
            }
        }
        else
        {
            PushToHotelMsg pushMsg = new PushToHotelMsg()
            {
                PushType = PushMsgType.UserTypeExclude,
                GameID   = broadcast.GameID,
                RoomID   = broadcast.RoomID,
                CpProto  = broadcast.CpProto,
            };
            pushMsg.DstUids.Add(broadcast.UserID);

            PushToHotel(broadcast.RoomID, pushMsg);
        }

        //PushToHotel(broadcast.RoomID, pushMsg);

        //测试主动推送给MVS的两个消息
        string str = broadcast.CpProto.ToStringUtf8();

        Logger.Info("HotelBroadcast, str = {0}", str);

        String[] result = str.Split("|");
        if (result.Length > 1)
        {
            if (result[0] == "joinover")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 1)
                {
                    UInt64 roomID = UInt64.Parse(param[0]);
                    UInt32 gameID = UInt32.Parse(param[1]);
                    UInt32 userID = UInt32.Parse(param[2]);
                    PushJoinOver(roomID, gameID, userID);
                }
            }
            else if (result[0] == "kickplayer")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 2)
                {
                    UInt64 roomID = UInt64.Parse(param[0]);
                    UInt32 srcID  = UInt32.Parse(param[1]);
                    UInt32 destID = UInt32.Parse(param[2]);

                    PushKickPlayer(roomID, srcID, destID);
                }
            }
            else if (result[0] == "getRoomDetail")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 1)
                {
                    UInt32 gameID = UInt32.Parse(param[0]);
                    UInt64 roomID = UInt64.Parse(param[1]);
                    PushGetRoomDetail(roomID, gameID);
                }
            }
        }

        Logger.Info("HotelBroadcast end, userID:{0} gameID:{1} roomID:{2} cpProto:{3}", broadcast.UserID, broadcast.GameID, broadcast.RoomID, broadcast.CpProto.ToStringUtf8());

        return(broadcastAck);
    }
Example #16
0
    public override IMessage OnHotelBroadCast(ByteString msg)
    {
        HotelBroadcast broadcast = new HotelBroadcast();

        ByteUtils.ByteStringToObject(broadcast, msg);
        Logger.Info("HotelBroadcast start, userID:{0} gameID:{1} roomID:{2} cpProto:{3}", broadcast.UserID, broadcast.GameID, broadcast.RoomID, broadcast.CpProto.ToStringUtf8());

        HotelBroadcastAck broadcastAck = new HotelBroadcastAck()
        {
            UserID = broadcast.UserID, Status = (UInt32)ErrorCode.Ok
        };

        PushToHotelMsg pushMsg = new PushToHotelMsg()
        {
            PushType = PushMsgType.UserTypeAll,
            GameID   = broadcast.GameID,
            RoomID   = broadcast.RoomID,
            CpProto  = broadcast.CpProto,
        };

        pushMsg.DstUids.Add(broadcast.UserID);

        PushToHotel(broadcast.RoomID, pushMsg);

        //测试主动推送给MVS的两个消息
        string str = broadcast.CpProto.ToStringUtf8();

        Logger.Info("HotelBroadcast, str = {0}", str);

        String[] result = str.Split("|");
        if (result.Length > 1)
        {
            if (result[0] == "joinover")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 1)
                {
                    UInt64 roomID = UInt64.Parse(param[0]);
                    UInt32 gameID = UInt32.Parse(param[1]);
                    PushJoinOver(roomID, gameID);
                }
            }
            else if (result[0] == "joinopen")
            {
                PushJoinOpen(broadcast.RoomID, broadcast.GameID);
            }
            else if (result[0] == "kickplayer")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 2)
                {
                    UInt64 roomID = UInt64.Parse(param[0]);
                    UInt32 destID = UInt32.Parse(param[1]);
                    PushKickPlayer(roomID, destID);
                }
            }
            else if (result[0] == "getRoomDetail")
            {
                String[] param = result[1].Split(",");
                if (param.Length > 1)
                {
                    UInt32 gameID = UInt32.Parse(param[0]);
                    UInt64 roomID = UInt64.Parse(param[1]);
                    PushGetRoomDetail(roomID, gameID, 2);
                }
            }
            else if (result[0] == "setRoomProperty")
            {
                ByteString roomProperty = Google.Protobuf.ByteString.CopyFromUtf8(result[1]);
                PushSetRoomProperty(broadcast.RoomID, broadcast.GameID, roomProperty);
            }
            else if (result[0] == "createRoom")
            {
                CreateRoom request = new CreateRoom()
                {
                    GameID   = broadcast.GameID,
                    Ttl      = 600,
                    RoomInfo = new RoomInfo()
                    {
                        RoomName     = "game server room",
                        MaxPlayer    = 2,
                        Mode         = 1,
                        CanWatch     = 1,
                        Visibility   = 1,
                        RoomProperty = Google.Protobuf.ByteString.CopyFromUtf8("hello"),
                    },
                    WatchSetting = new WatchSetting()
                    {
                        MaxWatch        = 3,
                        WatchPersistent = false,
                        WatchDelayMs    = 10 * 1000,
                        CacheTime       = 60 * 1000,
                    },
                };
                var reply = CreateRoom(request);
                Logger.Debug("create room request: {0}, reply: {1}", request, reply);
            }
            else if (result[0] == "touchRoom")
            {
                String[]  param   = result[1].Split(",");
                TouchRoom request = new TouchRoom()
                {
                    GameID = broadcast.GameID,
                    RoomID = UInt64.Parse(param[0]),
                    Ttl    = UInt32.Parse(param[1]),
                };
                var reply = TouchRoom(request);
                Logger.Debug("touch room request: {0}, reply: {1}", request, reply);
            }
            else if (result[0] == "destroyRoom")
            {
                DestroyRoom request = new DestroyRoom()
                {
                    GameID = broadcast.GameID,
                    RoomID = UInt64.Parse(result[1]),
                };
                var reply = DestroyRoom(request);
                Logger.Debug("destroy room request: {0}, reply: {1}", request, reply);
            }
            else if (result[0] == "setFrameSyncRate")
            {
                if (result.Length < 3)
                {
                    Logger.Error("set frame sync rate error: no cacheFrameMS");
                    return(new HotelBroadcastAck()
                    {
                        UserID = broadcast.UserID, Status = (UInt32)ErrorCode.BadRequest
                    });
                }

                var rate         = UInt32.Parse(result[1]);
                var cacheFrameMS = Int32.Parse(result[2]);
                SetFrameSyncRate(broadcast.RoomID, broadcast.GameID, rate, 1, cacheFrameMS);
                Logger.Debug("set frame sync rate: {0}", rate);
            }
            else if (result[0] == "getCacheData")
            {
                Int32 cacheFrameMS = Int32.Parse(result[1]);
                GetCacheData(broadcast.RoomID, broadcast.GameID, cacheFrameMS);
                Logger.Debug("get cache frame data: {0}", cacheFrameMS);
            }
            else if (result[0] == "frameBroadcast")
            {
                var cpProto = result[1];
                FrameBroadcast(broadcast.RoomID, broadcast.GameID, ByteString.CopyFromUtf8(cpProto), 2);
                Logger.Info("frame broadcast: {0}", cpProto);
            }
            else if (result[0] == "metric")
            {
                if (result.Length >= 3)
                {
                    string      name  = result[1];
                    double      value = double.Parse(result[2]);
                    MetricPoint point = new MetricPoint()
                    {
                        Name  = name,
                        Value = value,
                        Attr  = MetricAttr.Custom,
                    };
                    ReportAck ack = ReportMetrics(point);
                    Logger.Info("Set matric response: {0}", ack);
                }
            }
        }

        Logger.Info("HotelBroadcast end, userID:{0} gameID:{1} roomID:{2} cpProto:{3}", broadcast.UserID, broadcast.GameID, broadcast.RoomID, broadcast.CpProto.ToStringUtf8());

        return(broadcastAck);
    }
Example #17
0
    public override Package.Types.Frame DealMsg(Package.Types.Frame req)
    {
        Logger.Info("DealMsg, CmdID={0}, UserID={1}", req.CmdId, req.UserId);

        IMessage reply = null;

        Package.Types.Frame response = req;

        if (req.CmdId == (UInt32)HotelGsCmdID.HotelCreateConnect)
        {
            reply = msgHandler.OnHotelConnect(req.Message);
            metrics.RoomCountIncrement();
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.HotelBroadcastCmdid)
        {
            reply = msgHandler.OnHotelBroadCast(req.Message);
            metrics.MessageCountIncrement();
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.HotelCloseConnet)
        {
            reply = msgHandler.OnHotelCloseConnect(req.Message);
            metrics.RoomCountDecrement();
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.HotelPlayerCheckin)
        {
            reply = msgHandler.OnHotelCheckin(req.Message);
            metrics.PlayerCountIncrement();
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.GssetFrameSyncRateNotifyCmdid)
        {
            reply = SetFrameSyncRateNotify(req.Message);
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.GsframeDataNotifyCmdid)
        {
            reply = FrameDataNotify(req.Message);
            metrics.MessageCountIncrement();
        }
        else if (req.CmdId == (UInt32)HotelGsCmdID.GsframeSyncNotifyCmdid)
        {
            reply = FrameSyncNotify(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsJoinRoomReq)
        {
            reply = msgHandler.OnJoinRoom(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsCreateRoomReq)
        {
            reply = msgHandler.OnCreateRoom(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsLeaveRoomReq)
        {
            reply = msgHandler.OnLeaveRoom(req.Message);
            metrics.PlayerCountDecrement();
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsJoinOverReq)
        {
            reply = msgHandler.OnJoinOver(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsJoinOpenReq)
        {
            reply = msgHandler.OnJoinOpen(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsKickPlayerReq)
        {
            reply = msgHandler.OnKickPlayer(req.Message);
            metrics.PlayerCountDecrement();
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsNetworkStateReq)
        {
            Request request = new Request();
            ByteUtils.ByteStringToObject(request, req.Message);
            string status = request.CpProto.ToStringUtf8();
            //1.掉线了  2.重连成功  3.重连失败
            if (status == "3")
            {
                metrics.PlayerCountDecrement();
            }
            reply = msgHandler.OnConnectStatus(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsGetRoomDetailPush)
        {
            reply = msgHandler.OnRoomDetail(req.Message);
        }
        else if (req.CmdId == (UInt32)MvsGsCmdID.MvsSetRoomPropertyReq)
        {
            reply = msgHandler.OnSetRoomProperty(req.Message);
        }
        else
        {
            reply = new Reply()
            {
                Errno  = ErrorCode.NotImplemented,
                ErrMsg = string.Format("not found the cmdid:{0}", req.CmdId),
            };
        }

        response.CmdId  += 1;
        response.Message = ByteUtils.ObjectToByteString(reply);

        return(response);
    }