Package org.apache.avro.ipc.netty
Class NettyTransceiver
java.lang.Object
org.apache.avro.ipc.Transceiver
org.apache.avro.ipc.netty.NettyTransceiver
- All Implemented Interfaces:
Closeable,AutoCloseable
public class NettyTransceiver
extends org.apache.avro.ipc.Transceiver
A Netty-based
Transceiver implementation.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classAvro client handler for the Netty transportprotected static classCreates threads with unique names based on a specified name prefix.protected static classA ChannelFutureListener for channel write operations that notifies aCallbackif an error occurs while writing to the channel. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates a NettyTransceiver, and attempts to connect to the given address.NettyTransceiver(InetSocketAddress addr, Integer connectTimeoutMillis) Creates a NettyTransceiver, and attempts to connect to the given address.NettyTransceiver(InetSocketAddress addr, Integer connectTimeoutMillis, Consumer<io.netty.channel.socket.SocketChannel> initializer) Creates a NettyTransceiver, and attempts to connect to the given address.NettyTransceiver(InetSocketAddress addr, Integer connectTimeoutMillis, Consumer<io.netty.channel.socket.SocketChannel> initializer, Consumer<io.netty.bootstrap.Bootstrap> bootStrapInitialzier) Creates a NettyTransceiver, and attempts to connect to the given address.NettyTransceiver(InetSocketAddress addr, Consumer<io.netty.channel.socket.SocketChannel> initializer) Creates a NettyTransceiver, and attempts to connect to the given address. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes this transceiver and disconnects from the remote peer.voidclose(boolean awaitCompletion) Closes this transceiver and disconnects from the remote peer.protected io.netty.channel.ChannelInboundHandlerCreates a Netty ChannelUpstreamHandler for handling events on the Netty client channel.org.apache.avro.ProtocolbooleanvoidNetty channels are thread-safe, so there is no need to acquire locks.voidsetRemote(org.apache.avro.Protocol protocol) transceive(List<ByteBuffer> request) Override as non-synchronized method because the method is thread safe.voidtransceive(List<ByteBuffer> request, org.apache.avro.ipc.Callback<List<ByteBuffer>> callback) voidNetty channels are thread-safe, so there is no need to acquire locks.voidwriteBuffers(List<ByteBuffer> buffers)
-
Field Details
-
DEFAULT_CONNECTION_TIMEOUT_MILLIS
public static final int DEFAULT_CONNECTION_TIMEOUT_MILLISIf not specified, the default connection timeout will be used (60 sec).- See Also:
-
NETTY_CONNECT_TIMEOUT_OPTION
- See Also:
-
NETTY_TCP_NODELAY_OPTION
- See Also:
-
NETTY_KEEPALIVE_OPTION
- See Also:
-
DEFAULT_TCP_NODELAY_VALUE
public static final boolean DEFAULT_TCP_NODELAY_VALUE- See Also:
-
-
Constructor Details
-
NettyTransceiver
Creates a NettyTransceiver, and attempts to connect to the given address.DEFAULT_CONNECTION_TIMEOUT_MILLISis used for the connection timeout.- Parameters:
addr- the address to connect to.- Throws:
IOException- if an error occurs connecting to the given address.
-
NettyTransceiver
Creates a NettyTransceiver, and attempts to connect to the given address.- Parameters:
addr- the address to connect to.connectTimeoutMillis- maximum amount of time to wait for connection establishment in milliseconds, or null to useDEFAULT_CONNECTION_TIMEOUT_MILLIS.- Throws:
IOException- if an error occurs connecting to the given address.
-
NettyTransceiver
public NettyTransceiver(InetSocketAddress addr, Consumer<io.netty.channel.socket.SocketChannel> initializer) throws IOException Creates a NettyTransceiver, and attempts to connect to the given address.- Parameters:
addr- the address to connect to.initializer- Consumer function to apply initial setup to the SocketChannel. Useablet to set things like SSL requirements, compression, etc...- Throws:
IOException- if an error occurs connecting to the given address.
-
NettyTransceiver
public NettyTransceiver(InetSocketAddress addr, Integer connectTimeoutMillis, Consumer<io.netty.channel.socket.SocketChannel> initializer) throws IOException Creates a NettyTransceiver, and attempts to connect to the given address.- Parameters:
addr- the address to connect to.connectTimeoutMillis- maximum amount of time to wait for connection establishment in milliseconds, or null to useDEFAULT_CONNECTION_TIMEOUT_MILLIS.initializer- Consumer function to apply initial setup to the SocketChannel. Usable to set things like SSL requirements, compression, etc...- Throws:
IOException- if an error occurs connecting to the given address.
-
NettyTransceiver
public NettyTransceiver(InetSocketAddress addr, Integer connectTimeoutMillis, Consumer<io.netty.channel.socket.SocketChannel> initializer, Consumer<io.netty.bootstrap.Bootstrap> bootStrapInitialzier) throws IOException Creates a NettyTransceiver, and attempts to connect to the given address.- Parameters:
addr- the address to connect to.connectTimeoutMillis- maximum amount of time to wait for connection establishment in milliseconds, or null to useDEFAULT_CONNECTION_TIMEOUT_MILLIS.initializer- Consumer function to apply initial setup to the SocketChannel. Usable to set things like SSL requirements, compression, etc...bootStrapInitialzier- Consumer function to apply initial setup to the Bootstrap. Usable to set things like tcp connection properties, nagle algorithm, etc...- Throws:
IOException- if an error occurs connecting to the given address.
-
-
Method Details
-
createNettyClientAvroHandler
protected io.netty.channel.ChannelInboundHandler createNettyClientAvroHandler()Creates a Netty ChannelUpstreamHandler for handling events on the Netty client channel.- Returns:
- the ChannelUpstreamHandler to use.
-
lockChannel
public void lockChannel()Netty channels are thread-safe, so there is no need to acquire locks. This method is a no-op.- Overrides:
lockChannelin classorg.apache.avro.ipc.Transceiver
-
unlockChannel
public void unlockChannel()Netty channels are thread-safe, so there is no need to acquire locks. This method is a no-op.- Overrides:
unlockChannelin classorg.apache.avro.ipc.Transceiver
-
close
public void close()Closes this transceiver and disconnects from the remote peer. Cancels all pending RPCs, sends an IOException to all pending callbacks, and blocks until the close has completed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classorg.apache.avro.ipc.Transceiver
-
close
public void close(boolean awaitCompletion) Closes this transceiver and disconnects from the remote peer. Cancels all pending RPCs and sends an IOException to all pending callbacks.- Parameters:
awaitCompletion- if true, will block until the close has completed.
-
getRemoteName
- Specified by:
getRemoteNamein classorg.apache.avro.ipc.Transceiver- Throws:
IOException
-
transceive
Override as non-synchronized method because the method is thread safe.- Overrides:
transceivein classorg.apache.avro.ipc.Transceiver- Throws:
IOException
-
transceive
public void transceive(List<ByteBuffer> request, org.apache.avro.ipc.Callback<List<ByteBuffer>> callback) throws IOException - Overrides:
transceivein classorg.apache.avro.ipc.Transceiver- Throws:
IOException
-
writeBuffers
- Specified by:
writeBuffersin classorg.apache.avro.ipc.Transceiver- Throws:
IOException
-
readBuffers
- Specified by:
readBuffersin classorg.apache.avro.ipc.Transceiver- Throws:
IOException
-
getRemote
public org.apache.avro.Protocol getRemote()- Overrides:
getRemotein classorg.apache.avro.ipc.Transceiver
-
isConnected
public boolean isConnected()- Overrides:
isConnectedin classorg.apache.avro.ipc.Transceiver
-
setRemote
public void setRemote(org.apache.avro.Protocol protocol) - Overrides:
setRemotein classorg.apache.avro.ipc.Transceiver
-