Package org.drasyl.handler.remote.tcp
Class TcpClient
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.ChannelDuplexHandler
org.drasyl.handler.remote.tcp.TcpClient
- All Implemented Interfaces:
io.netty.channel.ChannelHandler
,io.netty.channel.ChannelInboundHandler
,io.netty.channel.ChannelOutboundHandler
This handler monitors how long the node has not received a response from any super peer. If the
super peers have not responded for
drasyl.remote.tcp-fallback.client.timeout
, an attempt
is made to connect to drasyl.remote.tcp-fallback.client.address
via TCP. If a TCP-based
connection can be established, all messages are also sent via TCP. As soon as a super peer
responds (again) via UDP, the TCP connection is closed.
This client is used as a last resort when otherwise no connection to a super peer can be established (e.g. because the node operates in a very restrictive network that does not allow UDP-based traffic). In this case, no direct connections to other peers are available and all messages must be relayed through the fallback connection.
This client is only used if the node does not act as a super peer itself.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Signals that theTcpClient
is connected toTcpClient.TcpClientConnected.getConnectAddress()
.static class
Signals that theTcpClient
was unable to connect to given address.Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable
-
Constructor Summary
ConstructorDescriptionTcpClient
(Function<DrasylServerChannel, io.netty.channel.ChannelInitializer<io.netty.channel.socket.SocketChannel>> channelInitializerSupplier) -
Method Summary
Modifier and TypeMethodDescriptionvoid
channelActive
(io.netty.channel.ChannelHandlerContext ctx) void
channelInactive
(io.netty.channel.ChannelHandlerContext ctx) void
channelRead
(io.netty.channel.ChannelHandlerContext ctx, Object msg) protected static DrasylServerChannelConfig
config
(io.netty.channel.ChannelHandlerContext ctx) void
flush
(io.netty.channel.ChannelHandlerContext ctx) void
write
(io.netty.channel.ChannelHandlerContext ctx, Object msg, io.netty.channel.ChannelPromise promise) Methods inherited from class io.netty.channel.ChannelDuplexHandler
bind, close, connect, deregister, disconnect, read
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, handlerRemoved, isSharable
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.netty.channel.ChannelHandler
handlerAdded, handlerRemoved
-
Constructor Details
-
TcpClient
public TcpClient(Function<DrasylServerChannel, io.netty.channel.ChannelInitializer<io.netty.channel.socket.SocketChannel>> channelInitializerSupplier) -
TcpClient
public TcpClient()
-
-
Method Details
-
channelActive
public void channelActive(io.netty.channel.ChannelHandlerContext ctx) - Specified by:
channelActive
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelActive
in classio.netty.channel.ChannelInboundHandlerAdapter
-
channelInactive
public void channelInactive(io.netty.channel.ChannelHandlerContext ctx) - Specified by:
channelInactive
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelInactive
in classio.netty.channel.ChannelInboundHandlerAdapter
-
channelRead
- Specified by:
channelRead
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelRead
in classio.netty.channel.ChannelInboundHandlerAdapter
-
write
public void write(io.netty.channel.ChannelHandlerContext ctx, Object msg, io.netty.channel.ChannelPromise promise) - Specified by:
write
in interfaceio.netty.channel.ChannelOutboundHandler
- Overrides:
write
in classio.netty.channel.ChannelDuplexHandler
-
flush
- Specified by:
flush
in interfaceio.netty.channel.ChannelOutboundHandler
- Overrides:
flush
in classio.netty.channel.ChannelDuplexHandler
- Throws:
Exception
-
config
-