public override void DoHandle(INetworkChannel channel, PlayerEntity entity, EClient2ServerMessage eClient2ServerMessage, PingRequestMessage messageBody) { var serverStatus = _contexts.session.serverSessionObjects.FpsSatatus; var request = messageBody; var resp = Protobuf.PingMessage.Allocate(); resp.Id = request.Id; resp.Type = request.Type; resp.Time = request.Time; resp.AvgDelta = (int)(serverStatus.AvgDelta); resp.MaxDelta = (int)(serverStatus.MaxDelta); resp.CmdLose = 100; resp.CmdTotal = 100; resp.Fps5 = serverStatus.Fps5; resp.Fps30 = serverStatus.Fps30; resp.Fps60 = serverStatus.Fps60; resp.GcCount = System.GC.CollectionCount(0); resp.GcStatus = SingletonManager.Get <gc_manager>().d_gc_disabled; resp.AllocatedMb = (int)SingletonManager.Get <gc_manager>().allocated_mb; resp.AllocationRateMbps = (int)SingletonManager.Get <gc_manager>().average_allocation_rate_mbps; if (request.Type) { channel.SendReliable((int)EServer2ClientMessage.Ping, resp); } else { channel.SendRealTime((int)EServer2ClientMessage.Ping, resp); } resp.ReleaseReference(); }
public void AsyncLoginPlayer(INetworkChannel channel, int messageType, object playerInfoObj) { IPlayerInfo playerInfo = (IPlayerInfo)playerInfoObj; logger.InfoFormat("Received LocalLogin Message ... playerName:{0}", playerInfo.PlayerName); if (channelToPlayer.Count == 0 && ContextsWrapper.contexts.player.count == 0) { ResetContexts(false); logger.InfoFormat("Reset All Entity Finish ..."); } if (!channelToPlayer.ContainsKey(channel)) { UpdateTestPlayerInfo(playerInfo); // 大厅传入错误RoleModelId if (null == SingletonManager.Get <RoleConfigManager>().GetRoleItemById(playerInfo.RoleModelId)) { logger.Error("RoleModelIdError: " + playerInfo.RoleModelId); playerInfo.RoleModelId = 2; } var player = CreateNewPlayerEntity(playerInfo); playerInfo.PlayerEntity = player; player.ReplaceNetwork(channel); playerInfo.StatisticsData = player.statisticsData.Statistics; if (ContextsWrapper.FreeArgs.Rule.GameStartTime > 0) { playerInfo.StatisticsData.GameJoinTime = ContextsWrapper.FreeArgs.Rule.ServerTime; } channelToPlayer[channel] = player; channel.MessageReceived += ChannelOnMessageReceived; channel.Disconnected += ChannelOnDisonnected; if (!player.hasUpdateMessagePool) { player.AddUpdateMessagePool(); } player.updateMessagePool.LastestExecuteUserCmdSeq = -1; playerInfo.InitPosition = player.position.Value; NoticeHallPlayerLoginSucc(player); player.ReplaceStage(EPlayerLoginStage.CreateEntity); var msg = PlayerInfoMessage.Allocate(); msg.ConvertFrom(playerInfo); channel.SendReliable((int)EServer2ClientMessage.PlayerInfo, msg); logger.InfoFormat("player login with name {0}, key {1}, game rule {2}, msp id {3}", playerInfo.PlayerName, player.entityKey, 0, 0); msg.ReleaseReference(); } else { logger.ErrorFormat("player duplicate login from name:{0}, channe:{1}", playerInfo.PlayerName, channel); } }
public void Send(INetworkChannel channel, bool logmsg, string messageName, params IMessage[] messageBodys) { var apc = Apc.Allocate(); apc.FunctionName = messageName; foreach (var msg in messageBodys) { if (null == msg) { continue; } MemoryStream stream = new MemoryStream(); _serializer.Serialize(stream, msg); ByteString byteString = ByteString.CopyFrom(stream.ToArray()); apc.Parameters.Add(byteString); } channel.SendReliable(messageName.GetHashCode(), apc); if (logmsg) { _logger.InfoFormat("Send Rpc Message {0} hascode {1} ref count {2}", messageName, messageName.GetHashCode(), apc.RefCount); } apc.ReleaseReference(); }
private void TcpMsg(INetworkChannel channel) { var ping = PingRequestMessage.Allocate(); ping.Id = _seq; ping.Type = true; ping.Time = DateTime.UtcNow.ToMillisecondsSinceEpoch(); ; channel.SendReliable((int)EClient2ServerMessage.Ping, ping); }
private void ServerOnChannelConnected(INetworkChannel networkChannel) { networkChannel.Serializer = _defaultSerializer; networkChannel.MessageReceived += NetworkChannelOnMessageReceived; var msg = UdpIdMessage.Allocate(); msg.Id = networkChannel.LocalConnId; msg.Port = SingletonManager.Get <ServerFileSystemConfigManager>().BootConfig.BattleServer.UdpPort; msg.ServerAsset = Version.Instance.LocalAsset; msg.ServerVersion = Version.Instance.LocalVersion; msg.ServerId = SingletonManager.Get <ServerFileSystemConfigManager>().BootConfig.Id; networkChannel.SendReliable((int)EServer2ClientMessage.UdpId, msg); msg.ReleaseReference(); }
public bool SendLoginSucc(IPlayerInfo playerInfo, INetworkChannel channel) { switch (state) { case RoomState.Initialized: case RoomState.Running: var sessionObjects = ContextsWrapper.contexts.session.serverSessionObjects; var msg = LoginSuccMessage.Allocate(); msg.GameRule = sessionObjects.GameRule; ContextsWrapper.RoomInfo.ToLoginSuccMsg(msg); msg.Camp = playerInfo.Camp; //FreeArgs.Trigger(FreeTriggerConstant.PRELOADRESOURCE, new TempUnit("roomInfo", new ObjectUnit(msg)), new TempUnit("playerInfo", new ObjectUnit(playerInfo))); channel.SendReliable((int)EServer2ClientMessage.SceneInfo, msg); if (RoomState.Running == state) { channel.SendReliable((int)EServer2ClientMessage.LoginSucc, msg); } msg.ReleaseReference(); logger.InfoFormat("player SendLoginSucc with name {0}", playerInfo.PlayerName); break; } return(true); }
private void SendMismatch(int cmdSeq, BulletInfoPair pair, INetworkChannel networkChannel) { if (!pair.Matched.HasValue) { if (null != pair.Client && null != pair.Server) { pair.Matched = pair.Client.IsMatched(pair.Server); if (!pair.Matched.Value) { var msg = FireInfoAckMessage.Allocate(); msg.Seq = cmdSeq; networkChannel.SendReliable((int)EServer2ClientMessage.FireInfoAck, msg); msg.ReleaseReference(); } } } }
public bool SendLoginSucc(IPlayerInfo playerInfo, INetworkChannel channel) { if (_state == RoomState.Running) { var sessionObjects = _contexts.session.serverSessionObjects; var msg = LoginSuccMessage.Allocate(); msg.GameRule = (int)sessionObjects.GameRule; _contexts.session.commonSession.RoomInfo.ToLoginSuccMsg(msg); msg.Camp = playerInfo.Camp; FreeArgs.Trigger(FreeTriggerConstant.PRELOAD_RESOURCE, new TempUnit("roomInfo", new ObjectUnit(msg)), new TempUnit("playerInfo", new ObjectUnit(playerInfo))); channel.SendReliable((int)EServer2ClientMessage.LoginSucc, msg); msg.ReleaseReference(); _logger.InfoFormat("player SendLoginSucc with name {0}", playerInfo.PlayerName); } return(true); }
public void Send(INetworkChannel channel, string messageName, params IMessage[] messageBodys) { var apc = Apc.Allocate(); apc.FunctionName = messageName; foreach (var msg in messageBodys) { if (null == msg) { continue; } MemoryStream stream = new MemoryStream(); _serializer.Serialize(stream, msg); ByteString byteString = ByteString.CopyFrom(stream.ToArray()); apc.Parameters.Add(byteString); } channel.SendReliable(messageName.GetHashCode(), apc); apc.ReleaseReference(); }
public void AddBulletData(int seq, Vector3 startPoint, Vector3 emitPoint, Vector3 startDir, Vector3 hitPoint, int hitType, INetworkChannel networkChannel) { _total += 1; var msg = FireInfoMessage.Allocate(); msg.Seq = seq; msg.StartPoint = Vector3Converter.UnityToProtobufVector3(startPoint); msg.StartDir = Vector3Converter.UnityToProtobufVector3(startDir); msg.EmitPoint = Vector3Converter.UnityToProtobufVector3(emitPoint); msg.HitPoint = Vector3Converter.UnityToProtobufVector3(hitPoint); msg.HitType = hitType; if (null != _networkChannel) { _networkChannel.SendReliable((int)EClient2ServerMessage.FireInfo, msg); } else { Logger.Error("NetworkChannel is null"); } msg.ReleaseReference(); }
public static void CollectBulletInfoC(BulletEntity entity, INetworkChannel networkChannel) { if (networkChannel == null) { return; } var cmd = entity.bulletData.CmdSeq; var start = entity.bulletData.StartPoint; var emit = entity.bulletData.EmitPoint; var dir = entity.bulletData.StartDir; var hit = entity.bulletData.HitPoint; var hitType = entity.bulletData.HitType; var msg = FireInfoMessage.Allocate(); msg.Seq = cmd; msg.StartPoint = Vector3Converter.UnityToProtobufVector3(start); msg.EmitPoint = Vector3Converter.UnityToProtobufVector3(emit); msg.StartDir = Vector3Converter.UnityToProtobufVector3(dir); msg.HitPoint = Vector3Converter.UnityToProtobufVector3(hit); msg.HitType = (int)hitType; networkChannel.SendReliable((int)EClient2ServerMessage.FireInfo, msg); msg.ReleaseReference(); }
private void Send(INetworkChannel channel, SimulationTimeMessage messageBody) { channel.SendReliable((int)EServer2ClientMessage.SimulationTimeSync, messageBody); }