Class AsyncDirectTcpTransport<D extends PacketData<?>,P extends Packet<?>>
- java.lang.Object
-
- com.hierynomus.smbj.transport.tcp.async.AsyncDirectTcpTransport<D,P>
-
- All Implemented Interfaces:
TransportLayer<P>
public class AsyncDirectTcpTransport<D extends PacketData<?>,P extends Packet<?>> extends java.lang.Object implements TransportLayer<P>
A transport layer over Direct TCP/IP that uses asynchronous I/O.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicBooleanconnectedprivate static intDEFAULT_CONNECT_TIMEOUTprivate static intDIRECT_HEADER_SIZEprivate PacketHandlers<D,P>handlersprivate org.slf4j.Loggerloggerprivate AsyncPacketReader<D>packetReaderprivate java.nio.channels.AsynchronousSocketChannelsocketChannelprivate intsoTimeoutprivate java.util.Queue<java.nio.ByteBuffer>writeQueueprivate java.util.concurrent.atomic.AtomicBooleanwritingNow
-
Constructor Summary
Constructors Constructor Description AsyncDirectTcpTransport(int soTimeout, PacketHandlers<D,P> handlers, java.nio.channels.AsynchronousChannelGroup group)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconnect(java.net.InetSocketAddress remoteAddress)Connect to the remote sidevoiddisconnect()Disconnect from the remote sidebooleanisConnected()Checks if the transport layer is currently connected.private java.nio.ByteBufferprepareBufferToSend(P packet)voidsetSoTimeout(int soTimeout)private voidstartAsyncWrite()voidwrite(P packet)Write the packet to the transport.private voidwriteOrEnqueue(java.nio.ByteBuffer buffer)
-
-
-
Field Detail
-
DEFAULT_CONNECT_TIMEOUT
private static final int DEFAULT_CONNECT_TIMEOUT
- See Also:
- Constant Field Values
-
DIRECT_HEADER_SIZE
private static final int DIRECT_HEADER_SIZE
- See Also:
- Constant Field Values
-
logger
private final org.slf4j.Logger logger
-
handlers
private final PacketHandlers<D extends PacketData<?>,P extends Packet<?>> handlers
-
socketChannel
private final java.nio.channels.AsynchronousSocketChannel socketChannel
-
packetReader
private final AsyncPacketReader<D extends PacketData<?>> packetReader
-
connected
private final java.util.concurrent.atomic.AtomicBoolean connected
-
soTimeout
private int soTimeout
-
writeQueue
private final java.util.Queue<java.nio.ByteBuffer> writeQueue
-
writingNow
private java.util.concurrent.atomic.AtomicBoolean writingNow
-
-
Constructor Detail
-
AsyncDirectTcpTransport
public AsyncDirectTcpTransport(int soTimeout, PacketHandlers<D,P> handlers, java.nio.channels.AsynchronousChannelGroup group) throws java.io.IOException- Throws:
java.io.IOException
-
-
Method Detail
-
write
public void write(P packet) throws TransportException
Description copied from interface:TransportLayerWrite the packet to the transport.- Specified by:
writein interfaceTransportLayer<D extends PacketData<?>>- Parameters:
packet- The packet to write.- Throws:
TransportException
-
writeOrEnqueue
private void writeOrEnqueue(java.nio.ByteBuffer buffer)
-
connect
public void connect(java.net.InetSocketAddress remoteAddress) throws java.io.IOExceptionDescription copied from interface:TransportLayerConnect to the remote side- Specified by:
connectin interfaceTransportLayer<D extends PacketData<?>>- Parameters:
remoteAddress- The remote address to connect to- Throws:
java.io.IOException
-
disconnect
public void disconnect() throws java.io.IOExceptionDescription copied from interface:TransportLayerDisconnect from the remote side- Specified by:
disconnectin interfaceTransportLayer<D extends PacketData<?>>- Throws:
java.io.IOException
-
isConnected
public boolean isConnected()
Description copied from interface:TransportLayerChecks if the transport layer is currently connected.- Specified by:
isConnectedin interfaceTransportLayer<D extends PacketData<?>>
-
setSoTimeout
public void setSoTimeout(int soTimeout)
-
startAsyncWrite
private void startAsyncWrite()
-
prepareBufferToSend
private java.nio.ByteBuffer prepareBufferToSend(P packet)
-
-