Class NettyNetworkServer
java.lang.Object
eu.cloudnetservice.driver.network.netty.server.NettyNetworkServer
- All Implemented Interfaces:
NetworkComponent,NetworkServer,PacketSender,AutoCloseable
The default netty based implementation of the network server.
- Since:
- 4.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final io.netty5.channel.EventLoopGroupprotected final Map<HostAndPort, io.netty5.util.concurrent.Future<Void>> protected final Collection<NetworkChannel> protected final Callable<NetworkChannelHandler> protected final NetworkTaskSchedulerprotected final PacketListenerRegistryprotected final io.netty5.handler.ssl.SslContextprotected static final io.netty5.channel.WriteBufferWaterMarkprotected final io.netty5.channel.EventLoopGroup -
Constructor Summary
ConstructorsConstructorDescriptionNettyNetworkServer(@NonNull ComponentInfo componentInfo, @NonNull Callable<NetworkChannelHandler> handlerFactory) Constructs a new netty network server instance.NettyNetworkServer(@NonNull ComponentInfo componentInfo, @NonNull Callable<NetworkChannelHandler> handlerFactory, @Nullable SSLConfiguration sslConfiguration) Constructs a new netty network server instance. -
Method Summary
Modifier and TypeMethodDescriptionaddListener(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.addListener(@NonNull HostAndPort hostAndPort) Binds this network server to the given host and port if no listener is already listening on the given address.channels()Get an immutable collection of all channels which are associated with this component.voidclose()voidCloses all open connections associated with this network component.private static @Nullable io.netty5.handler.ssl.SslContextinitializeSslContext(@Nullable SSLConfiguration sslConfig) Builds the ssl context for this server if a ssl configuration was supplied and is active.Get the dispatching executor for received packets in any channel which is bound to this network component.Get the packet listener registry which will be the root registry for all channels initialized by this component.voidsendPacket(@NonNull Packet packet) Sends the given packet to the associated target.voidsendPacketSync(@NonNull Packet packet) Sends the given packet to the associated target, waiting for the packet write to the channel to complete before resuming the current thread.booleanGet if this component has ssl enabled.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface eu.cloudnetservice.driver.network.NetworkComponent
firstChannelMethods inherited from interface eu.cloudnetservice.driver.network.protocol.PacketSender
sendPacket
-
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
-
channelFutures
-
packetRegistry
-
packetDispatcher
-
handlerFactory
-
-
Constructor Details
-
NettyNetworkServer
public NettyNetworkServer(@NonNull @NonNull ComponentInfo componentInfo, @NonNull @NonNull Callable<NetworkChannelHandler> handlerFactory) Constructs a new netty network server instance. Equivalent tonew 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 ComponentInfo componentInfo, @NonNull @NonNull Callable<NetworkChannelHandler> handlerFactory, @Nullable @Nullable 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 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()Get if this component has ssl enabled.- Specified by:
sslEnabledin interfaceNetworkComponent- Returns:
- true if this component has ssl enabled, false otherwise.
-
addListener
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:
addListenerin interfaceNetworkServer- 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 CompletableFuture<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:
addListenerin interfaceNetworkServer- 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:
closein interfaceAutoCloseable
-
channels
Get an immutable collection of all channels which are associated with this component.- Specified by:
channelsin interfaceNetworkComponent- Returns:
- an immutable collection of all channels which are associated with this component.
-
packetDispatcher
Get the dispatching executor for received packets in any channel which is bound to this network component.- Specified by:
packetDispatcherin interfaceNetworkComponent- Returns:
- the dispatching executor for received packets.
-
packetRegistry
Get the packet listener registry which will be the root registry for all channels initialized by this component.- Specified by:
packetRegistryin interfaceNetworkComponent- Returns:
- the root packet registry for all associated channels.
-
sendPacket
Sends the given packet to the associated target.- Specified by:
sendPacketin interfacePacketSender- Parameters:
packet- the packet to send.
-
sendPacketSync
Sends the given packet to the associated target, waiting for the packet write to the channel to complete before resuming the current thread.- Specified by:
sendPacketSyncin interfacePacketSender- Parameters:
packet- the packet to send.
-
closeChannels
public void closeChannels()Closes all open connections associated with this network component.- Specified by:
closeChannelsin interfaceNetworkComponent
-