DiscoveryModule class
Пакет: com.hypixel.hytale.server.core.discovery
Файл: com/hypixel/hytale/server/core/discovery/DiscoveryModule.java
extends: JavaPlugin
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
MAX_CONSECUTIVE_AUTH_FAILURES |
|
LiveConfigModule |
var0 |
|
String |
var1 |
|
DiscoveryService.HeartbeatResult |
var2 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
DiscoveryService |
getServiceDiscoveryService getService() |
public |
boolean |
hasDiscoveryTokenboolean hasDiscoveryToken() |
|
|
if if(var1 == null) |
|
|
if if(this.heartbeatTask != null) |
|
|
if if(this.heartbeatTask != null) |
|
|
if if(var1 == null) |
static |
boolean |
isDiscoveryEnabledboolean isDiscoveryEnabled() |
private |
void |
onBootvoid onBoot(BootEvent var1) |
private |
void |
sendHeartbeatvoid sendHeartbeat() |
public |
void |
setDiscoveryTokenvoid setDiscoveryToken(@Nullable String var1) |
private |
void |
startSendingHeartbeatsvoid startSendingHeartbeats() |
private |
void |
stopSendingHeartbeatsvoid stopSendingHeartbeats() |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.discovery;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.auth.ServerAuthManager;
class="kw">import com.hypixel.hytale.server.core.discovery.command.DiscoveryCommand;
class="kw">import com.hypixel.hytale.server.core.event.events.BootEvent;
class="kw">import com.hypixel.hytale.server.core.liveconfig.LiveConfigModule;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.util.Config;
class="kw">import java.util.concurrent.ScheduledFuture;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.concurrent.atomic.AtomicInteger;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.checkerframework.checker.nullness.compatqual.NonNullDecl;
class="kw">public class DiscoveryModule class="kw">extends JavaPlugin {
class="kw">private class="kw">static class="kw">final int MAX_CONSECUTIVE_AUTH_FAILURES = 5;
@Nonnull
class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(DiscoveryModule.class).build();
class="kw">private class="kw">final Config<DiscoveryModuleConfig> config = this.withConfig("DiscoveryModule", DiscoveryModuleConfig.CODEC);
class="kw">private class="kw">final DiscoveryService service = new DiscoveryService();
@Nullable
class="kw">private ScheduledFuture<?> heartbeatTask;
class="kw">private class="kw">final AtomicInteger consecutiveAuthFailures = new AtomicInteger(0);
class="kw">public DiscoveryModule(@NonNullDecl JavaPluginInit var1) {
super(var1);
}
@Override
class="kw">protected void setup() {
if (ServerAuthManager.getInstance().getAuthMode() != ServerAuthManager.AuthMode.SINGLEPLAYER) {
this.getCommandRegistry().registerCommand(new DiscoveryCommand(this));
this.getEventRegistry().register(BootEvent.class, this::onBoot);
}
}
@Override
class="kw">protected void shutdown() {
this.stopSendingHeartbeats();
}
class="kw">private void onBoot(BootEvent var1) {
if (this.config.get().getDiscoveryToken() != null) {
this.startSendingHeartbeats();
}
}
class="kw">public void setDiscoveryToken(@Nullable String var1) {
this.config.get().setDiscoveryToken(var1);
this.config.save();
if (var1 == null) {
this.stopSendingHeartbeats();
} else {
this.startSendingHeartbeats();
}
}
class="kw">public boolean hasDiscoveryToken() {
class="kw">return this.config.get().getDiscoveryToken() != null;
}
class="kw">public DiscoveryService getService() {
class="kw">return this.service;
}
class="kw">public class="kw">static boolean isDiscoveryEnabled() {
LiveConfigModule var0 = LiveConfigModule.get();
class="kw">return var0 == null ? true : var0.getBoolFlag("enable_server_discovery_heartbeats", true);
}
class="kw">private void startSendingHeartbeats() {
if (this.heartbeatTask != null) {
this.stopSendingHeartbeats();
}
this.heartbeatTask = HytaleServer.SCHEDULED_EXECUTOR.scheduleAtFixedRate(this::sendHeartbeat, 20L, 60L, TimeUnit.SECONDS);
}
class="kw">private void stopSendingHeartbeats() {
if (this.heartbeatTask != null) {
this.heartbeatTask.cancel(false);
this.heartbeatTask = null;
}
}
class="kw">private void sendHeartbeat() {
String var1 = this.config.get().getDiscoveryToken();
if (var1 == null) {
this.stopSendingHeartbeats();
} else if (ServerAuthManager.getInstance().hasSessionToken()) {
if (isDiscoveryEnabled()) {
DiscoveryService.HeartbeatResult var2 = this.service.sendHeartbeat(var1);
if (var2.isAuthFailure()) {
if (this.consecutiveAuthFailures.incrementAndGet() > 5) {
this.setDiscoveryToken(null);
}
} else {
this.consecutiveAuthFailures.set(0);
}
}
}
}
}