RouterNodeSystem.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. namespace ET.Server
  2. {
  3. [EntitySystemOf(typeof(RouterNode))]
  4. public static partial class RouterNodeSystem
  5. {
  6. [EntitySystem]
  7. private static void Awake(this RouterNode self)
  8. {
  9. long timeNow = TimeInfo.Instance.ServerNow();
  10. self.LastRecvInnerTime = timeNow;
  11. self.LastRecvOuterTime = timeNow;
  12. self.OuterIpEndPoint = null;
  13. self.InnerIpEndPoint = null;
  14. self.RouterSyncCount = 0;
  15. self.InnerConn = 0;
  16. }
  17. [EntitySystem]
  18. private static void Destroy(this RouterNode self)
  19. {
  20. self.InnerConn = 0;
  21. self.LastRecvInnerTime = 0;
  22. self.LastRecvOuterTime = 0;
  23. self.OuterIpEndPoint = null;
  24. self.InnerIpEndPoint = null;
  25. self.InnerAddress = null;
  26. self.RouterSyncCount = 0;
  27. self.SyncCount = 0;
  28. }
  29. public static bool CheckOuterCount(this RouterNode self, long timeNow)
  30. {
  31. if (self.LastCheckTime == 0)
  32. {
  33. self.LastCheckTime = timeNow;
  34. }
  35. if (timeNow - self.LastCheckTime > 1000)
  36. {
  37. //Log.Debug($"router recv packet per second: {self.LimitCountPerSecond}");
  38. self.LimitCountPerSecond = 0;
  39. self.LastCheckTime = timeNow;
  40. }
  41. if (++self.LimitCountPerSecond > 1000)
  42. {
  43. return false;
  44. }
  45. return true;
  46. }
  47. }
  48. }