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
-
-
Field Summary
Fields Modifier and Type Field Description 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 static StringManager
sm
protected SocketChannel
socketChannel
protected ByteBuffer
writebuf
-
Constructor Summary
Constructors Constructor Description NioSender()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
connect()
connect - blocking in this operationvoid
disconnect()
disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender methodbyte[]
getMessage()
Selector
getSelector()
boolean
isComplete()
boolean
process(SelectionKey key, boolean waitForAck)
State machine to send data.protected boolean
read()
void
reset()
void
setComplete(boolean complete)
void
setMessage(byte[] data)
sendMessagevoid
setMessage(byte[] data, int offset, int length)
void
setSelector(Selector selector)
protected boolean
write()
-
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:
true
if 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 IOException
connect - blocking in this operation- Specified by:
connect
in interfaceDataSender
- Specified by:
connect
in 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:
disconnect
in interfaceDataSender
- Specified by:
disconnect
in classAbstractSender
-
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)
-
-