## 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
implements DataSender

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
`protected XByteBuffer` `ackbuf`
`protected boolean` `complete`
`protected boolean` `connecting`
`protected byte[]` `current`
`protected static Log` `log`
`protected java.nio.ByteBuffer` `readbuf`
`protected int` `remaining`
`protected java.nio.channels.Selector` `selector`
`protected java.nio.channels.SocketChannel` `socketChannel`
`protected java.nio.ByteBuffer` `writebuf`

Constructor Summary
`NioSender()`

Method Summary
`void` `connect()` connect - blocking in this operation
`void` `disconnect()` disconnect
`byte[]` `getMessage()`
`java.nio.channels.Selector` `getSelector()`
`boolean` `isComplete()`
`boolean` `process(java.nio.channels.SelectionKey key, boolean waitForAck)` State machine to send data
`protected boolean` `read(java.nio.channels.SelectionKey key)`
`void` `reset()`
`void` `setComplete(boolean complete)`
`void` `setMessage(byte[] data)` sendMessage
`void` `setMessage(byte[] data, int offset, int length)`
`void` `setSelector(java.nio.channels.Selector selector)`
`protected boolean` `write(java.nio.channels.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, isConnected, keepalive, setAddress, setAttempt, setConnected, setConnectTime, setDestination, setDirect, setDirectBuffer, setKeepAliveCount, setKeepAliveTime, setMaxRetryAttempts, setOoBInline, setPort, setRequestCount, setRxBufSize, setSoKeepAlive, setSoLingerOn, setSoLingerTime, setSoReuseAddress, setSoTrafficClass, setTcpNoDelay, setThrowOnFailedAck, setTimeout, setTxBufSize, transferProperties`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.catalina.tribes.transport.DataSender
`getConnectTime, getRequestCount, isConnected, keepalive, setKeepAliveCount, setKeepAliveTime, setRxBufSize, setTimeout, setTxBufSize`

Field Detail

### log

    protected static Log log

### selector

    protected java.nio.channels.Selector selector

### socketChannel

    protected java.nio.channels.SocketChannel socketChannel

### readbuf

    protected java.nio.ByteBuffer readbuf

### writebuf

    protected java.nio.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(java.nio.channels.SelectionKey key,
                           boolean waitForAck)
                    throws java.io.IOException

  State machine to send data

  Parameters:
    `key` - SelectionKey
  Returns:
    boolean
  Throws:
    `java.io.IOException`

### read

    protected boolean read(java.nio.channels.SelectionKey key)
                    throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    protected boolean write(java.nio.channels.SelectionKey key)
                     throws java.io.IOException

  Throws:
    `java.io.IOException`

### connect

    public void connect()
                 throws java.io.IOException

  connect - blocking in this operation

  Specified by:
    `connect` in interface `DataSender`
  Specified by:
    `connect` in class `AbstractSender`
  Throws:
    `java.io.IOException`

### disconnect

    public void disconnect()

  disconnect

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

### reset

    public void reset()

### setMessage

    public void setMessage(byte[] data)
                    throws java.io.IOException

  sendMessage

  Parameters:
    `data` - ChannelMessage
  Throws:
    `java.io.IOException`

### setMessage

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

  Throws:
    `java.io.IOException`

### getMessage

    public byte[] getMessage()

### isComplete

    public boolean isComplete()

### getSelector

    public java.nio.channels.Selector getSelector()

### setSelector

    public void setSelector(java.nio.channels.Selector selector)

### setComplete

    public void setComplete(boolean complete)

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.