Class NettyNetworkServer

java.lang.Object
eu.cloudnetservice.driver.impl.network.netty.server.NettyNetworkServer
All Implemented Interfaces:
eu.cloudnetservice.driver.network.NetworkComponent, eu.cloudnetservice.driver.network.NetworkServer, eu.cloudnetservice.driver.network.protocol.PacketSender, AutoCloseable

@Singleton public class NettyNetworkServer extends Object implements eu.cloudnetservice.driver.network.NetworkServer
The default netty based implementation of the network server.
Since:
4.0
  • Field Details

    • WATER_MARK

      protected static final io.netty5.channel.WriteBufferWaterMark WATER_MARK
    • sslContext

      protected final io.netty5.handler.ssl.SslContext sslContext
    • bossEventLoopGroup

      protected final io.netty5.channel.EventLoopGroup bossEventLoopGroup
    • workerEventLoopGroup

      protected final io.netty5.channel.EventLoopGroup workerEventLoopGroup
    • channels

      protected final Collection<eu.cloudnetservice.driver.network.NetworkChannel> channels
    • channelFutures

      protected final Map<eu.cloudnetservice.driver.network.HostAndPort, io.netty5.util.concurrent.Future<Void>> channelFutures
    • packetRegistry

      protected final eu.cloudnetservice.driver.network.protocol.PacketListenerRegistry packetRegistry
    • packetDispatcher

      protected final NetworkTaskScheduler packetDispatcher
    • handlerFactory

      protected final Callable<eu.cloudnetservice.driver.network.NetworkChannelHandler> handlerFactory
  • Constructor Details

    • NettyNetworkServer

      public NettyNetworkServer(@NonNull @NonNull eu.cloudnetservice.driver.ComponentInfo componentInfo, @NonNull @NonNull Callable<eu.cloudnetservice.driver.network.NetworkChannelHandler> handlerFactory)
      Constructs a new netty network server instance. Equivalent to new NettyNetworkServer(factory, null).
      Parameters:
      componentInfo - the component info of the current component the server is created for.
      handlerFactory - the handler factory to use.
      Throws:
      NullPointerException - if the given event manager, component info or factory is null.
    • NettyNetworkServer

      public NettyNetworkServer(@NonNull @NonNull eu.cloudnetservice.driver.ComponentInfo componentInfo, @NonNull @NonNull Callable<eu.cloudnetservice.driver.network.NetworkChannelHandler> handlerFactory, @Nullable @Nullable eu.cloudnetservice.driver.network.ssl.SSLConfiguration sslConfiguration)
      Constructs a new netty network server instance.
      Parameters:
      componentInfo - the component info of the current component the server is created for.
      handlerFactory - the handler factory to use.
      sslConfiguration - the ssl configuration to apply, or null if ssl should be disabled.
      Throws:
      NullPointerException - if the given event manager, component info or factory is null.
  • Method Details

    • initializeSslContext

      @Nullable private static @Nullable io.netty5.handler.ssl.SslContext initializeSslContext(@Nullable @Nullable eu.cloudnetservice.driver.network.ssl.SSLConfiguration sslConfig)
      Builds the ssl context for this server if a ssl configuration was supplied and is active.
      Parameters:
      sslConfig - the supplied ssl configuration to build the ssl context based on, can be null.
      Returns:
      the constructed ssl context based on the given configuration.
      Throws:
      IllegalStateException - if an error occurs during construction of the ssl context.
      IllegalArgumentException - if the trust certificate chain or private key file is invalid.
    • sslEnabled

      public boolean sslEnabled()
      Specified by:
      sslEnabled in interface eu.cloudnetservice.driver.network.NetworkComponent
    • addListener

      @NonNull public @NonNull CompletableFuture<Void> addListener(int port)
      Specified by:
      addListener in interface eu.cloudnetservice.driver.network.NetworkServer
    • addListener

      @NonNull public @NonNull CompletableFuture<Void> addListener(@NonNull @NonNull eu.cloudnetservice.driver.network.HostAndPort hostAndPort)
      Specified by:
      addListener in interface eu.cloudnetservice.driver.network.NetworkServer
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • channels

      @NonNull public @NonNull Collection<eu.cloudnetservice.driver.network.NetworkChannel> channels()
      Specified by:
      channels in interface eu.cloudnetservice.driver.network.NetworkComponent
    • packetDispatcher

      @NonNull public @NonNull Executor packetDispatcher()
      Specified by:
      packetDispatcher in interface eu.cloudnetservice.driver.network.NetworkComponent
    • packetRegistry

      @NonNull public @NonNull eu.cloudnetservice.driver.network.protocol.PacketListenerRegistry packetRegistry()
      Specified by:
      packetRegistry in interface eu.cloudnetservice.driver.network.NetworkComponent
    • sendPacket

      public void sendPacket(@NonNull @NonNull eu.cloudnetservice.driver.network.protocol.Packet packet)
      Specified by:
      sendPacket in interface eu.cloudnetservice.driver.network.protocol.PacketSender
    • sendPacketSync

      public void sendPacketSync(@NonNull @NonNull eu.cloudnetservice.driver.network.protocol.Packet packet)
      Specified by:
      sendPacketSync in interface eu.cloudnetservice.driver.network.protocol.PacketSender
    • closeChannels

      public void closeChannels()
      Specified by:
      closeChannels in interface eu.cloudnetservice.driver.network.NetworkComponent