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);
            }
         }
      }
   }
}