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
-
-
Field Summary
Fields Modifier and Type Field Description protected XByteBufferackbufprotected booleancompleteprotected booleanconnectingprotected byte[]currentprotected DatagramChanneldataChannelprotected ByteBufferreadbufprotected intremainingprotected Selectorselectorprotected static StringManagersmprotected SocketChannelsocketChannelprotected ByteBufferwritebuf
-
Constructor Summary
Constructors Constructor Description NioSender()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconnect()connect - blocking in this operationvoiddisconnect()disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender methodbyte[]getMessage()SelectorgetSelector()booleanisComplete()booleanprocess(SelectionKey key, boolean waitForAck)State machine to send data.protected booleanread()voidreset()voidsetComplete(boolean complete)voidsetMessage(byte[] data)sendMessagevoidsetMessage(byte[] data, int offset, int length)voidsetSelector(Selector selector)protected booleanwrite()-
Methods inherited from class org.apache.catalina.tribes.transport.AbstractSender
getAddress, getAttempt, getConnectTime, getDestination, 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, setDirectBuffer, setKeepAliveCount, setKeepAliveTime, setMaxRetryAttempts, setOoBInline, setPort, setRequestCount, setRxBufSize, setSoKeepAlive, setSoLingerOn, setSoLingerTime, setSoReuseAddress, setSoTrafficClass, setTcpNoDelay, setThrowOnFailedAck, setTimeout, setTxBufSize, setUdpBased, setUdpPort, setUdpRxBufSize, setUdpTxBufSize, transferProperties
-
-
-
-
Field Detail
-
sm
protected static final StringManager sm
-
selector
protected Selector selector
-
socketChannel
protected SocketChannel socketChannel
-
dataChannel
protected DatagramChannel dataChannel
-
readbuf
protected ByteBuffer readbuf
-
writebuf
protected ByteBuffer writebuf
-
current
protected volatile byte[] current
-
ackbuf
protected final XByteBuffer ackbuf
-
remaining
protected int remaining
-
complete
protected boolean complete
-
connecting
protected boolean connecting
-
-
Method Detail
-
process
public boolean process(SelectionKey key, boolean waitForAck) throws IOException
State machine to send data.- Parameters:
key- The key to usewaitForAck- Wait for an ack- Returns:
trueif the processing was successful- Throws:
IOException- An IO error occurred
-
read
protected boolean read() throws IOException- Throws:
IOException
-
write
protected boolean write() throws IOException- Throws:
IOException
-
connect
public void connect() throws IOExceptionconnect - blocking in this operation- Specified by:
connectin interfaceDataSender- Specified by:
connectin classAbstractSender- 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:
disconnectin interfaceDataSender- Specified by:
disconnectin classAbstractSender
-
reset
public void reset()
-
setMessage
public void setMessage(byte[] data) throws IOExceptionsendMessage- 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)
-
-