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