mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
[+] 接入ET8服务端
[+] 接入ET8服务端
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
|
||||
namespace ET
|
||||
{
|
||||
[EntitySystemOf(typeof(SessionAcceptTimeoutComponent))]
|
||||
[FriendOf(typeof(SessionAcceptTimeoutComponent))]
|
||||
public static partial class SessionAcceptTimeoutComponentHelper
|
||||
{
|
||||
[Invoke(TimerInvokeType.SessionAcceptTimeout)]
|
||||
public class SessionAcceptTimeout: ATimer<SessionAcceptTimeoutComponent>
|
||||
{
|
||||
protected override void Run(SessionAcceptTimeoutComponent self)
|
||||
{
|
||||
try
|
||||
{
|
||||
self.Parent.Dispose();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error($"move timer error: {self.Id}\n{e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[EntitySystem]
|
||||
private static void Awake(this SessionAcceptTimeoutComponent self)
|
||||
{
|
||||
self.Timer = self.Fiber().TimerComponent.NewOnceTimer(self.Fiber().TimeInfo.ServerNow() + 5000, TimerInvokeType.SessionAcceptTimeout, self);
|
||||
}
|
||||
|
||||
[EntitySystem]
|
||||
private static void Destroy(this SessionAcceptTimeoutComponent self)
|
||||
{
|
||||
self.Fiber().TimerComponent?.Remove(ref self.Timer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 389d0d5a5107d864782d45a819b8fcd5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
|
||||
namespace ET
|
||||
{
|
||||
[EntitySystemOf(typeof(SessionIdleCheckerComponent))]
|
||||
[FriendOf(typeof(SessionIdleCheckerComponent))]
|
||||
public static partial class SessionIdleCheckerComponentSystem
|
||||
{
|
||||
[Invoke(TimerInvokeType.SessionIdleChecker)]
|
||||
public class SessionIdleChecker: ATimer<SessionIdleCheckerComponent>
|
||||
{
|
||||
protected override void Run(SessionIdleCheckerComponent self)
|
||||
{
|
||||
try
|
||||
{
|
||||
self.Check();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error($"session idle checker timer error: {self.Id}\n{e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[EntitySystem]
|
||||
private static void Awake(this SessionIdleCheckerComponent self)
|
||||
{
|
||||
self.RepeatedTimer = self.Fiber().TimerComponent.NewRepeatedTimer(CheckInteral, TimerInvokeType.SessionIdleChecker, self);
|
||||
}
|
||||
|
||||
[EntitySystem]
|
||||
private static void Destroy(this SessionIdleCheckerComponent self)
|
||||
{
|
||||
self.Fiber().TimerComponent?.Remove(ref self.RepeatedTimer);
|
||||
}
|
||||
|
||||
public const int CheckInteral = 2000;
|
||||
|
||||
private static void Check(this SessionIdleCheckerComponent self)
|
||||
{
|
||||
Session session = self.GetParent<Session>();
|
||||
long timeNow = self.Fiber().TimeInfo.ClientNow();
|
||||
|
||||
if (timeNow - session.LastRecvTime < ConstValue.SessionTimeoutTime && timeNow - session.LastSendTime < ConstValue.SessionTimeoutTime)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Log.Info($"session timeout: {session.Id} {timeNow} {session.LastRecvTime} {session.LastSendTime} {timeNow - session.LastRecvTime} {timeNow - session.LastSendTime}");
|
||||
session.Error = ErrorCore.ERR_SessionSendOrRecvTimeout;
|
||||
|
||||
session.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a68abadd37d72f14393cf250c23e1164
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user