RouterNodeSystem.cs 1.8 KB

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