Class NioSender
java.lang.Object
org.apache.catalina.tribes.transport.AbstractSender
org.apache.catalina.tribes.transport.nio.NioSender
- All Implemented Interfaces:
- 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
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final XByteBufferprotected booleanprotected booleanprotected byte[]protected DatagramChannelprotected ByteBufferprotected intprotected Selectorprotected static final StringManagerprotected SocketChannelprotected ByteBuffer
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidconnect()connect - blocking in this operationvoiddisconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender methodbyte[]booleanbooleanprocess(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.AbstractSendergetAddress, 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 Details- 
sm
- 
selector
- 
socketChannel
- 
dataChannel
- 
readbuf
- 
writebuf
- 
currentprotected volatile byte[] current
- 
ackbuf
- 
remainingprotected int remaining
- 
completeprotected boolean complete
- 
connectingprotected boolean connecting
 
- 
- 
Constructor Details- 
NioSenderpublic NioSender()
 
- 
- 
Method Details- 
processState machine to send data.- Parameters:
- key- The key to use
- waitForAck- Wait for an ack
- Returns:
- trueif the processing was successful
- Throws:
- IOException- An IO error occurred
 
- 
read- Throws:
- IOException
 
- 
write- Throws:
- IOException
 
- 
connectconnect - blocking in this operation- Specified by:
- connectin interface- DataSender
- Specified by:
- connectin class- AbstractSender
- Throws:
- IOException- TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
 
- 
disconnectpublic void disconnect()disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender method- Specified by:
- disconnectin interface- DataSender
- Specified by:
- disconnectin class- AbstractSender
 
- 
resetpublic void reset()
- 
setMessagesendMessage- Parameters:
- data- ChannelMessage
- Throws:
- IOException- TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
 
- 
setMessage- Throws:
- IOException
 
- 
getMessagepublic byte[] getMessage()
- 
isCompletepublic boolean isComplete()
- 
getSelector
- 
setSelector
- 
setCompletepublic void setComplete(boolean complete) 
 
-