org.apache.catalina.tribes.transport.nio

## Class NioSender

- java.lang.Object
- - org.apache.catalina.tribes.transport.AbstractSender
  - - org.apache.catalina.tribes.transport.nio.NioSender

All Implemented Interfaces:
  DataSender

    public class NioSender
    extends AbstractSender

This class is NOT thread safe and should never be used with more than one thread at a time This is a state machine, handled by the process method States are: - NOT_CONNECTED -> connect() -> CONNECTED - CONNECTED -> setMessage() -> READY TO WRITE - READY_TO_WRITE -> write() -> READY TO WRITE | READY TO READ - READY_TO_READ -> read() -> READY_TO_READ | TRANSFER_COMPLETE - TRANSFER_COMPLETE -> CONNECTED

Version:
  1.0
Author:
  Filip Hanik

### Field Summary

Fields
`protected XByteBuffer` `ackbuf`
`protected boolean` `complete`
`protected boolean` `connecting`
`protected byte[]` `current`
`protected DatagramChannel` `dataChannel`
`protected ByteBuffer` `readbuf`
`protected int` `remaining`
`protected Selector` `selector`
`protected SocketChannel` `socketChannel`
`protected ByteBuffer` `writebuf`

### Constructor Summary

Constructors
Constructor and Description
`NioSender()`

### Method Summary

Methods
`void` `connect()` connect - blocking in this operation
`void` `disconnect()` disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
`byte[]` `getMessage()`
`Selector` `getSelector()`
`boolean` `isComplete()`
`boolean` `process(SelectionKey key, boolean waitForAck)` State machine to send data
`protected boolean` `read(SelectionKey key)`
`void` `reset()`
`void` `setComplete(boolean complete)`
`void` `setMessage(byte[] data)` sendMessage
`void` `setMessage(byte[] data, int offset, int length)`
`void` `setSelector(Selector selector)`
`protected boolean` `write(SelectionKey key)`

### Methods inherited from class org.apache.catalina.tribes.transport.AbstractSender

`getAddress, getAttempt, getConnectTime, getDestination, getDirect, getDirectBuffer, getKeepAliveCount, getKeepAliveTime, getMaxRetryAttempts, getOoBInline, getPort, getRequestCount, getRxBufSize, getSoKeepAlive, getSoLingerOn, getSoLingerTime, getSoReuseAddress, getSoTrafficClass, getTcpNoDelay, getThrowOnFailedAck, getTimeout, getTxBufSize, getUdpPort, getUdpRxBufSize, getUdpTxBufSize, isConnected, isUdpBased, keepalive, setAddress, setAttempt, setConnected, setConnectTime, setDestination, setDirect, setDirectBuffer, setKeepAliveCount, setKeepAliveTime, setMaxRetryAttempts, setOoBInline, setPort, setRequestCount, setRxBufSize, setSoKeepAlive, setSoLingerOn, setSoLingerTime, setSoReuseAddress, setSoTrafficClass, setTcpNoDelay, setThrowOnFailedAck, setTimeout, setTxBufSize, setUdpBased, setUdpPort, setUdpRxBufSize, setUdpTxBufSize, transferProperties`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### selector

    protected Selector selector

#### socketChannel

    protected SocketChannel socketChannel

#### dataChannel

    protected DatagramChannel dataChannel

#### readbuf

    protected ByteBuffer readbuf

#### writebuf

    protected ByteBuffer writebuf

#### current

    protected byte[] current

#### ackbuf

    protected XByteBuffer ackbuf

#### remaining

    protected int remaining

#### complete

    protected boolean complete

#### connecting

    protected boolean connecting

### Constructor Detail

#### NioSender

    public NioSender()

### Method Detail

#### process

    public boolean process(SelectionKey key,
                  boolean waitForAck)
                    throws IOException

State machine to send data

Parameters:
  `key` - SelectionKey
Returns:
  boolean
Throws:
  `IOException`

#### read

    protected boolean read(SelectionKey key)
                    throws IOException

Throws:
  `IOException`

#### write

    protected boolean write(SelectionKey key)
                     throws IOException

Throws:
  `IOException`

#### connect

    public void connect()
                 throws IOException

connect - blocking in this operation

Specified by:
  `connect` in interface `DataSender`
Specified by:
  `connect` in class `AbstractSender`
Throws:
  `IOException` - TODO Implement this org.apache.catalina.tribes.transport.IDataSender method

#### disconnect

    public void disconnect()

disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender method

Specified by:
  `disconnect` in interface `DataSender`
Specified by:
  `disconnect` in class `AbstractSender`

#### reset

    public void reset()

#### setMessage

    public void setMessage(byte[] data)
                    throws IOException

sendMessage

Parameters:
  `data` - ChannelMessage
Throws:
  `IOException` - TODO Implement this org.apache.catalina.tribes.transport.IDataSender method

#### setMessage

    public void setMessage(byte[] data,
                  int offset,
                  int length)
                    throws IOException

Throws:
  `IOException`

#### getMessage

    public byte[] getMessage()

#### isComplete

    public boolean isComplete()

#### getSelector

    public Selector getSelector()

#### setSelector

    public void setSelector(Selector selector)

#### setComplete

    public void setComplete(boolean complete)