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.AtomicBoolean
connected
private static int
DEFAULT_CONNECT_TIMEOUT
private static int
DIRECT_HEADER_SIZE
private PacketHandlers<D,P>
handlers
private org.slf4j.Logger
logger
private AsyncPacketReader<D>
packetReader
private java.nio.channels.AsynchronousSocketChannel
socketChannel
private int
soTimeout
private java.util.Queue<java.nio.ByteBuffer>
writeQueue
private java.util.concurrent.atomic.AtomicBoolean
writingNow
-
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 void
connect(java.net.InetSocketAddress remoteAddress)
Connect to the remote sidevoid
disconnect()
Disconnect from the remote sideboolean
isConnected()
Checks if the transport layer is currently connected.private java.nio.ByteBuffer
prepareBufferToSend(P packet)
void
setSoTimeout(int soTimeout)
private void
startAsyncWrite()
void
write(P packet)
Write the packet to the transport.private void
writeOrEnqueue(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:TransportLayer
Write the packet to the transport.- Specified by:
write
in 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.IOException
Description copied from interface:TransportLayer
Connect to the remote side- Specified by:
connect
in interfaceTransportLayer<D extends PacketData<?>>
- Parameters:
remoteAddress
- The remote address to connect to- Throws:
java.io.IOException
-
disconnect
public void disconnect() throws java.io.IOException
Description copied from interface:TransportLayer
Disconnect from the remote side- Specified by:
disconnect
in interfaceTransportLayer<D extends PacketData<?>>
- Throws:
java.io.IOException
-
isConnected
public boolean isConnected()
Description copied from interface:TransportLayer
Checks if the transport layer is currently connected.- Specified by:
isConnected
in interfaceTransportLayer<D extends PacketData<?>>
-
setSoTimeout
public void setSoTimeout(int soTimeout)
-
startAsyncWrite
private void startAsyncWrite()
-
prepareBufferToSend
private java.nio.ByteBuffer prepareBufferToSend(P packet)
-
-