Class NettyTcpTransport
- java.lang.Object
-
- org.apache.qpid.jms.transports.netty.NettyTcpTransport
-
- All Implemented Interfaces:
Transport
- Direct Known Subclasses:
NettyWsTransport
public class NettyTcpTransport extends Object implements Transport
TCP based transport that uses Netty as the underlying IO layer.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classNettyTcpTransport.NettyDefaultHandler<E>protected classNettyTcpTransport.NettyTcpTransportHandler
-
Field Summary
Fields Modifier and Type Field Description protected io.netty.channel.Channelchannelstatic intDEFAULT_MAX_FRAME_SIZEprotected EventLoopGroupRefgroupRefprotected ThreadFactoryioThreadfactoryprotected TransportListenerlistenerprotected intmaxFrameSize
-
Constructor Summary
Constructors Constructor Description NettyTcpTransport(URI remoteLocation, TransportOptions options, boolean secure)Create a new transport instanceNettyTcpTransport(TransportListener listener, URI remoteLocation, TransportOptions options, boolean secure)Create a new transport instance
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAdditionalHandlers(io.netty.channel.ChannelPipeline pipeline)io.netty.buffer.ByteBufallocateSendBuffer(int size)Request that the Transport provide an output buffer sized for the given value.protected voidcheckConnected()voidclose()Close the Transport, no additional send operations are accepted.ScheduledExecutorServiceconnect(Runnable initRoutine, SSLContext sslContextOverride)Performs the connect operation for the implemented Transport type such as a TCP socket connection, SSL/TLS handshake etc.protected io.netty.channel.ChannelInboundHandlerAdaptercreateChannelHandler()voidflush()Request a flush of all pending writes to the underlying connection.PrincipalgetLocalPrincipal()intgetMaxFrameSize()Returns the currently configured maximum frame size setting.protected StringgetRemoteHost()URIgetRemoteLocation()protected intgetRemotePort()ThreadFactorygetThreadFactory()TransportListenergetTransportListener()Gets the currently set TransportListener instanceTransportOptionsgetTransportOptions()protected voidhandleChannelInactive(io.netty.channel.Channel channel)protected voidhandleConnected(io.netty.channel.Channel channel)protected voidhandleException(io.netty.channel.Channel channel, Throwable cause)booleanisConnected()booleanisSecure()voidsetMaxFrameSize(int maxFrameSize)Sets the Maximum Frame Size the transport should accept from the remote.voidsetThreadFactory(ThreadFactory factory)Sets theThreadFactorythat the Transport should use when creating the Transport IO thread for processing.voidsetTransportListener(TransportListener listener)Sets the Transport Listener instance that will be notified of incoming data or error events.voidwrite(io.netty.buffer.ByteBuf output)Writes a chunk of data over the Transport connection without performing an explicit flush on the transport.voidwriteAndFlush(io.netty.buffer.ByteBuf output)Writes a chunk of data over the Transport connection and requests a flush of all pending queued write operations
-
-
-
Field Detail
-
DEFAULT_MAX_FRAME_SIZE
public static final int DEFAULT_MAX_FRAME_SIZE
- See Also:
- Constant Field Values
-
groupRef
protected EventLoopGroupRef groupRef
-
channel
protected io.netty.channel.Channel channel
-
listener
protected TransportListener listener
-
ioThreadfactory
protected ThreadFactory ioThreadfactory
-
maxFrameSize
protected int maxFrameSize
-
-
Constructor Detail
-
NettyTcpTransport
public NettyTcpTransport(URI remoteLocation, TransportOptions options, boolean secure)
Create a new transport instance- Parameters:
remoteLocation- the URI that defines the remote resource to connect to.options- the transport options used to configure the socket connection.secure- should the transport enable an SSL layer.
-
NettyTcpTransport
public NettyTcpTransport(TransportListener listener, URI remoteLocation, TransportOptions options, boolean secure)
Create a new transport instance- Parameters:
listener- the TransportListener that will receive events from this Transport.remoteLocation- the URI that defines the remote resource to connect to.options- the transport options used to configure the socket connection.secure- should the transport enable an SSL layer.
-
-
Method Detail
-
connect
public ScheduledExecutorService connect(Runnable initRoutine, SSLContext sslContextOverride) throws IOException
Description copied from interface:TransportPerforms the connect operation for the implemented Transport type such as a TCP socket connection, SSL/TLS handshake etc.- Specified by:
connectin interfaceTransport- Parameters:
initRoutine- a runnable initialization method that is executed in the context of the transport's IO thread to allow thread safe setup of resources that will be run from the transport executor service.sslContextOverride- a user-provided SSLContext to use if establishing a secure connection, overrides applicable URI configuration- Returns:
- A ScheduledThreadPoolExecutor that can run work on the Transport IO thread.
- Throws:
IOException- if an error occurs while attempting the connect.
-
isConnected
public boolean isConnected()
- Specified by:
isConnectedin interfaceTransport- Returns:
- true if transport is connected or false if the connection is down.
-
isSecure
public boolean isSecure()
-
close
public void close() throws IOExceptionDescription copied from interface:TransportClose the Transport, no additional send operations are accepted.- Specified by:
closein interfaceTransport- Throws:
IOException- if an error occurs while closing the connection.
-
allocateSendBuffer
public io.netty.buffer.ByteBuf allocateSendBuffer(int size) throws IOExceptionDescription copied from interface:TransportRequest that the Transport provide an output buffer sized for the given value.- Specified by:
allocateSendBufferin interfaceTransport- Parameters:
size- the size necessary to hold the outgoing bytes.- Returns:
- a new ByteBuf allocated for sends operations.
- Throws:
IOException- if an error occurs while allocating the send buffer.
-
write
public void write(io.netty.buffer.ByteBuf output) throws IOExceptionDescription copied from interface:TransportWrites a chunk of data over the Transport connection without performing an explicit flush on the transport.- Specified by:
writein interfaceTransport- Parameters:
output- The buffer of data that is to be transmitted.- Throws:
IOException- if an error occurs during the write operation.
-
writeAndFlush
public void writeAndFlush(io.netty.buffer.ByteBuf output) throws IOExceptionDescription copied from interface:TransportWrites a chunk of data over the Transport connection and requests a flush of all pending queued write operations- Specified by:
writeAndFlushin interfaceTransport- Parameters:
output- The buffer of data that is to be transmitted.- Throws:
IOException- if an error occurs during the write operation.
-
flush
public void flush() throws IOExceptionDescription copied from interface:TransportRequest a flush of all pending writes to the underlying connection.- Specified by:
flushin interfaceTransport- Throws:
IOException- if an error occurs during the flush operation.
-
getTransportListener
public TransportListener getTransportListener()
Description copied from interface:TransportGets the currently set TransportListener instance- Specified by:
getTransportListenerin interfaceTransport- Returns:
- the current TransportListener or null if none set.
-
setTransportListener
public void setTransportListener(TransportListener listener)
Description copied from interface:TransportSets the Transport Listener instance that will be notified of incoming data or error events.- Specified by:
setTransportListenerin interfaceTransport- Parameters:
listener- The new TransportListener instance to use (cannot be null).
-
getTransportOptions
public TransportOptions getTransportOptions()
- Specified by:
getTransportOptionsin interfaceTransport- Returns:
- the TransportOptions instance that holds the configuration for this Transport.
-
getRemoteLocation
public URI getRemoteLocation()
- Specified by:
getRemoteLocationin interfaceTransport- Returns:
- the URI of the remote peer that this Transport connects to.
-
getLocalPrincipal
public Principal getLocalPrincipal()
- Specified by:
getLocalPrincipalin interfaceTransport- Returns:
- the local principal for a Transport that is using a secure connection.
-
setMaxFrameSize
public void setMaxFrameSize(int maxFrameSize)
Description copied from interface:TransportSets the Maximum Frame Size the transport should accept from the remote. This option is not applicable to all transport types, those that support validating the incoming frame size should apply the configured value.- Specified by:
setMaxFrameSizein interfaceTransport- Parameters:
maxFrameSize- The maximum frame size to accept from the remote.
-
getMaxFrameSize
public int getMaxFrameSize()
Description copied from interface:TransportReturns the currently configured maximum frame size setting.- Specified by:
getMaxFrameSizein interfaceTransport- Returns:
- the current max frame size setting for this transport.
-
getThreadFactory
public ThreadFactory getThreadFactory()
- Specified by:
getThreadFactoryin interfaceTransport- Returns:
- the
ThreadFactoryused to create the IO thread for this Transport
-
setThreadFactory
public void setThreadFactory(ThreadFactory factory)
Description copied from interface:TransportSets theThreadFactorythat the Transport should use when creating the Transport IO thread for processing.- Specified by:
setThreadFactoryin interfaceTransport- Parameters:
factory- TheThreadFactory
-
getRemoteHost
protected String getRemoteHost()
-
getRemotePort
protected int getRemotePort()
-
addAdditionalHandlers
protected void addAdditionalHandlers(io.netty.channel.ChannelPipeline pipeline)
-
createChannelHandler
protected io.netty.channel.ChannelInboundHandlerAdapter createChannelHandler()
-
handleConnected
protected void handleConnected(io.netty.channel.Channel channel) throws Exception- Throws:
Exception
-
handleChannelInactive
protected void handleChannelInactive(io.netty.channel.Channel channel) throws Exception- Throws:
Exception
-
handleException
protected void handleException(io.netty.channel.Channel channel, Throwable cause)
-
checkConnected
protected final void checkConnected() throws IOException- Throws:
IOException
-
-