MCPcopy Create free account
hub / github.com/e2wugui/zeze / Online

Class Online

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Online.java:85–2209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83import org.jetbrains.annotations.Nullable;
84
85public class Online extends AbstractOnline implements HotUpgrade, HotBeanFactory {
86 protected static final @NotNull Logger logger = LogManager.getLogger(Online.class);
87 protected static final BeanFactory beanFactory = new BeanFactory();
88 protected static @Nullable Online defaultInstance; // 默认Online实例,stop后会置null
89
90 public final @NotNull ProviderApp providerApp;
91 private final AtomicLong loginTimes = new AtomicLong();
92 private final @NotNull TimerRole timerRole;
93
94 private final @NotNull EventDispatcher loginEvents;
95 private final @NotNull EventDispatcher reloginEvents;
96 private final @NotNull EventDispatcher logoutEvents;
97 private final @NotNull EventDispatcher localRemoveEvents;
98 private final @NotNull EventDispatcher linkBrokenEvents;
99
100 // 缓存拥有Local数据的HotModule,用来优化。
101 private final ConcurrentHashSet<HotModule> hotModulesHaveLocal = new ConcurrentHashSet<>();
102 private boolean freshStopModuleLocal;
103 private final ConcurrentHashSet<HotModule> hotModulesHaveDynamic = new ConcurrentHashSet<>();
104 private boolean freshStopModuleDynamic;
105 private volatile long localActiveTimeout = 600 * 1000; // 活跃时间超时。
106 private volatile long localCheckPeriod = 600 * 1000; // 检查间隔
107 private final AtomicInteger verifyLocalCount = new AtomicInteger();
108
109 private final ConcurrentHashMap<String, TransmitAction> transmitActions = new ConcurrentHashMap<>();
110 private @Nullable Future<?> verifyLocalTimer;
111
112 public @NotNull ProviderApp getProviderApp() {
113 return providerApp;
114 }
115
116 public void setLocalActiveTimeout(long timeout) {
117 lock();
118 try {
119 localActiveTimeout = timeout;
120 } finally {
121 unlock();
122 }
123 }
124
125 public void setLocalCheckPeriod(long period) {
126 lock();
127 try {
128 if (period <= 1)
129 throw new IllegalArgumentException();
130 localCheckPeriod = period;
131 } finally {
132 unlock();
133 }
134 }
135
136 private void startLocalCheck() {
137 if (verifyLocalTimer != null)
138 verifyLocalTimer.cancel(false);
139 verifyLocalTimer = Task.scheduleUnsafe(localCheckPeriod, this::verifyLocal);
140 }
141
142 private void onHotModuleStop(HotModule hot) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected