123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- namespace ET.Server
- {
- [Invoke(TimerInvokeType.HeartBeatTimeout)]
- public class HeartBeatCheck: ATimer<HeartBeatTimeoutComponent>
- {
- protected override void Run(HeartBeatTimeoutComponent self)
- {
- try
- {
- self.Check();
- }
- catch (Exception e)
- {
- Log.Error($"move timer error: {self.Id}\n{e}");
- }
- }
- }
- [ObjectSystem]
- public class HeartBeatTimeoutComponentAwakeSystem: AwakeSystem<HeartBeatTimeoutComponent>
- {
- protected override void Awake(HeartBeatTimeoutComponent self)
- {
- self.Timer = TimerComponent.Instance.NewRepeatedTimer( Math.Max( ConstValue.HeartBeatTimeoutTime, 5 ), TimerInvokeType.HeartBeatTimeout, self);
- }
- }
- [ObjectSystem]
- public class HeartBeatTimeoutComponentDestroySystem: DestroySystem<HeartBeatTimeoutComponent>
- {
- protected override void Destroy(HeartBeatTimeoutComponent self)
- {
- TimerComponent.Instance?.Remove(ref self.Timer);
- }
- }
- public static class HeartBeatTimeoutComponentSystem
- {
- public static void Check(this HeartBeatTimeoutComponent self)
- {
- Session session = self.GetParent<Session>();
- long timeNow = TimeHelper.ClientNow();
- if (session.LastPingTime == 0 || timeNow - session.LastPingTime < ConstValue.HeartBeatTimeoutTime)
- {
- return;
- }
- Log.Info($"heartBeat timeout: {session.Id} {timeNow} {session.LastPingTime} {timeNow - session.LastPingTime}");
- session.Error = ErrorCore.ERR_HeartBeatTimeout;
- session.Dispose();
- }
- }
- }
|