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 java.nio.channels.DatagramChanneldataChannelprotected java.nio.ByteBufferreadbufprotected intremainingprotected java.nio.channels.Selectorselectorprotected static StringManagersmprotected java.nio.channels.SocketChannelsocketChannelprotected java.nio.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()java.nio.channels.SelectorgetSelector()booleanisComplete()booleanprocess(java.nio.channels.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(java.nio.channels.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 java.nio.channels.Selector selector
-
socketChannel
protected java.nio.channels.SocketChannel socketChannel
-
dataChannel
protected java.nio.channels.DatagramChannel dataChannel
-
readbuf
protected java.nio.ByteBuffer readbuf
-
writebuf
protected java.nio.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(java.nio.channels.SelectionKey key, boolean waitForAck) throws java.io.IOExceptionState machine to send data.- Parameters:
key- The key to usewaitForAck- Wait for an ack- Returns:
trueif the processing was successful- Throws:
java.io.IOException- An IO error occurred
-
read
protected boolean read() throws java.io.IOException- Throws:
java.io.IOException
-
write
protected boolean write() throws java.io.IOException- Throws:
java.io.IOException
-
connect
public void connect() throws java.io.IOExceptionconnect - blocking in this operation- Specified by:
connectin interfaceDataSender- Specified by:
connectin classAbstractSender- Throws:
java.io.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 java.io.IOExceptionsendMessage- Parameters:
data- ChannelMessage- Throws:
java.io.IOException- TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
-
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)
-
-