Class AsyncDirectTcpTransport<D extends PacketData<?>,​P extends Packet<?>>

  • 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 Detail

      • DEFAULT_CONNECT_TIMEOUT

        private static final int DEFAULT_CONNECT_TIMEOUT
        See Also:
        Constant Field Values
      • logger

        private final org.slf4j.Logger logger
      • socketChannel

        private final java.nio.channels.AsynchronousSocketChannel socketChannel
      • 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

      • 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 interface TransportLayer<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 interface TransportLayer<D extends PacketData<?>>
        Throws:
        java.io.IOException
      • setSoTimeout

        public void setSoTimeout​(int soTimeout)
      • startAsyncWrite

        private void startAsyncWrite()
      • prepareBufferToSend

        private java.nio.ByteBuffer prepareBufferToSend​(P packet)