QuicheTransport class

Пакет: com.hypixel.hytale.server.core.io.transport

Файл: com/hypixel/hytale/server/core/io/transport/QuicheTransport.java

implements: Transport

Поля (7)

МодификаторыТипИмя
final QuicheServerCredentials credentials
StandardProtocolFamily var2
HytaleServerConfig var3
HytaleServerConfig.TimeoutProfile var4
RateLimitConfig var5
QuicheConfig.RateLimit var6
QuicheConfig var7

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.io.transport;

class="kw">import com.hypixel.hytale.lib.quiche.QuicheConfig;
class="kw">import com.hypixel.hytale.lib.quiche.QuicheListener;
class="kw">import com.hypixel.hytale.lib.quiche.QuicheServerCredentials;
class="kw">import com.hypixel.hytale.protocol.io.ServerListener;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.HytaleServerConfig;
class="kw">import com.hypixel.hytale.server.core.auth.ServerAuthManager;
class="kw">import com.hypixel.hytale.server.core.config.RateLimitConfig;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.InitialPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.stream.PendingStreamConnectionHandler;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import java.net.Inet6Address;
class="kw">import java.net.InetSocketAddress;
class="kw">import java.net.StandardProtocolFamily;
class="kw">import java.util.concurrent.CompletableFuture;

class="kw">public class QuicheTransport class="kw">implements Transport {
   class="kw">private class="kw">final QuicheServerCredentials credentials = QuicheServerCredentials.generateSelfSigned();

   class="kw">public QuicheTransport() {
      ServerAuthManager.getInstance().setServerCertificate(this.credentials.certificate());
   }

   @Override
   class="kw">public TransportType getType() {
      class="kw">return TransportType.QUICHE;
   }

   @Override
   class="kw">public CompletableFuture<ServerListener> bind(InetSocketAddress var1) {
      class="kw">return CompletableFuture.supplyAsync(
         SneakyThrow.sneakySupplier(
            () -> {
               StandardProtocolFamily var2 = var1.getAddress() class="kw">instanceof Inet6Address ? StandardProtocolFamily.INET6 : StandardProtocolFamily.INET;
               HytaleServerConfig var3 = HytaleServer.get().getConfig();
               HytaleServerConfig.TimeoutProfile var4 = var3.getConnectionTimeouts();
               RateLimitConfig var5 = var3.getRateLimitConfig();
               QuicheConfig.RateLimit var6 = var5.isEnabled()
                  ? new QuicheConfig.RateLimit(var5.getBurstCapacity(), var5.getPacketsPerSecond())
                  : QuicheConfig.RateLimit.DISABLED;
               QuicheConfig var7 = new QuicheConfig(var4.getInitial(), var4.getInitial(), var4.getAuxStreamPending(), var6);
               class="kw">return new QuicheListener(
                  var2,
                  var1,
                  this.credentials,
                  var7,
                  InitialPacketHandler::new,
                  (var0, var1x) -> var0 class="kw">instanceof PacketHandler var2 ? new PendingStreamConnectionHandler(var2, var1x) : null
               );
            }
         )
      );
   }

   @Override
   class="kw">public void shutdown() {
   }
}