Class NettyNetworkServer

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

@Singleton public class NettyNetworkServer extends NettySslServer implements DefaultNetworkComponent, 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
    • bossEventLoopGroup

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

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

      protected final Collection<NetworkChannel> channels
    • channelFutures

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

      protected final PacketListenerRegistry packetRegistry
    • eventManager

      protected final EventManager eventManager
    • packetDispatcher

      protected final Executor packetDispatcher
    • handlerFactory

      protected final Callable<NetworkChannelHandler> handlerFactory
  • Constructor Details

  • Method Details

    • sslEnabled

      public boolean sslEnabled()
      Get if this component has ssl enabled.
      Specified by:
      sslEnabled in interface NetworkComponent
      Returns:
      true if this component has ssl enabled, false otherwise.
    • addListener

      @NonNull public @NonNull eu.cloudnetservice.common.concurrent.Task<Void> addListener(int port)
      Binds this network server to the given port on any local address (ipv6 form: ::/0) if no other listener is already listening to that port.
      Specified by:
      addListener in interface NetworkServer
      Parameters:
      port - the port to which the listener should get bound.
      Returns:
      a future completed exceptionally if the bind fails, normally if the bind succeeded.
    • addListener

      @NonNull public @NonNull eu.cloudnetservice.common.concurrent.Task<Void> addListener(@NonNull @NonNull HostAndPort hostAndPort)
      Binds this network server to the given host and port if no listener is already listening on the given address.
      Specified by:
      addListener in interface NetworkServer
      Parameters:
      hostAndPort - the address to which a listener should get bound.
      Returns:
      a future completed exceptionally if the bind fails, normally if the bind succeeded.
    • close

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

      Get an immutable collection of all channels which are associated with this component.
      Specified by:
      channels in interface NetworkComponent
      Returns:
      an immutable collection of all channels which are associated with this component.
    • packetDispatcher

      @NonNull public @NonNull Executor packetDispatcher()
      Get the dispatching executor for received packets in any channel which is bound to this network component.
      Specified by:
      packetDispatcher in interface NetworkComponent
      Returns:
      the dispatching executor for received packets.
    • modifiableChannels

      @NonNull public @NonNull Collection<NetworkChannel> modifiableChannels()
      Get the collection of channels which are connected to this network component. The returned collection is modifiable, but should not be used by developers to make any changes to it. If you need all channels which are connected to the component use NetworkComponent.channels() instead.
      Specified by:
      modifiableChannels in interface DefaultNetworkComponent
      Returns:
      all channels which are connected to this component, modifiable.
    • sendPacketSync

      public void sendPacketSync(@NonNull @NonNull Packet... packets)
      Sends all the given packets to the associated target, waiting for the packet writes to the channel to complete before resuming the current thread.
      Specified by:
      sendPacketSync in interface PacketSender
      Parameters:
      packets - the packets to send.
    • packetRegistry

      @NonNull public @NonNull PacketListenerRegistry packetRegistry()
      Get the packet listener registry which will be the root registry for all channels initialized by this component.
      Specified by:
      packetRegistry in interface NetworkComponent
      Returns:
      the root packet registry for all associated channels.