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 java.nio.channels.DatagramChannel
dataChannel
protected java.nio.ByteBuffer
readbuf
protected int
remaining
protected java.nio.channels.Selector
selector
protected static StringManager
sm
protected java.nio.channels.SocketChannel
socketChannel
protected java.nio.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()
java.nio.channels.Selector
getSelector()
boolean
isComplete()
boolean
process(java.nio.channels.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(java.nio.channels.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 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.IOException
State machine to send data.- Parameters:
key
- The key to usewaitForAck
- Wait for an ack- Returns:
true
if 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.IOException
connect - blocking in this operation- Specified by:
connect
in interfaceDataSender
- Specified by:
connect
in 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:
disconnect
in interfaceDataSender
- Specified by:
disconnect
in classAbstractSender
-
reset
public void reset()
-
setMessage
public void setMessage(byte[] data) throws java.io.IOException
sendMessage- 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)
-
-