Class NioReceiver
java.lang.Object
org.apache.catalina.tribes.transport.ReceiverBase
org.apache.catalina.tribes.transport.nio.NioReceiver
- All Implemented Interfaces:
Runnable, ChannelReceiver, Heartbeat, ListenCallback, NioReceiverMBean, RxTaskPool.TaskCreator
NIO-based receiver for cluster communication.
-
Field Summary
FieldsModifier and TypeFieldDescriptionQueue of events to be processed by the selector thread.protected longTimestamp of the last socket timeout check.protected static final StringManagerThe string manager for this package.Fields inherited from class ReceiverBase
OPTION_DIRECT_BUFFERFields inherited from interface ChannelReceiver
MAX_UDP_SIZE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a runnable event to the selector's event queue.protected voidbind()Binds the server socket and datagram channels to their respective ports.static voidcancelledKey(SelectionKey key) Handles a cancelled selection key by closing associated channels and cleaning up resources.Creates a new receive task.voidevents()Processes all pending events in the event queue.protected voidlisten()Get data from channel and store in byte array send it to clusterprotected voidSample data handler method for a channel with data ready to read.protected voidregisterChannel(Selector selector, SelectableChannel channel, int ops, Object attach) Register the given channel with the given selector for the given operations of interestvoidrun()Start thread and listenprotected voidChecks for socket timeouts and handles expired connections.voidstart()Starts the receiver by creating the executor service and registering with JMX.voidstop()Stops the receiver by shutting down the executor and unregistering from JMX.protected voidClose Selector.Methods inherited from class ReceiverBase
bind, bindUdp, doListen, getActiveCount, getAddress, getAutoBind, getBind, getChannel, getCompletedTaskCount, getDirect, getExecutor, getHost, getListener, getMaxIdleTime, getMaxTasks, getMaxThreads, getMessageListener, getMinTasks, getMinThreads, getOoBInline, getPoolSize, getPort, getRxBufSize, getSecurePort, getSelectorTimeout, getSoKeepAlive, getSoLingerOn, getSoLingerTime, getSoReuseAddress, getSoTrafficClass, getTaskCount, getTaskPool, getTcpNoDelay, getTimeout, getTxBufSize, getUdpPort, getUdpRxBufSize, getUdpTxBufSize, getUseBufferPool, getWorkerThreadOptions, heartbeat, isDaemon, isListening, messageDataReceived, setAddress, setAutoBind, setBind, setChannel, setDaemon, setDirect, setExecutor, setHost, setListen, setListener, setMaxIdleTime, setMaxTasks, setMaxThreads, setMessageListener, setMinTasks, setMinThreads, setOoBInline, setPool, setPort, setRxBufSize, setSecurePort, setSelectorTimeout, setSoKeepAlive, setSoLingerOn, setSoLingerTime, setSoReuseAddress, setSoTrafficClass, setTcpNoDelay, setTimeout, setTxBufSize, setUdpPort, setUdpRxBufSize, setUdpTxBufSize, setUseBufferPoolMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface NioReceiverMBean
getActiveCount, getAddress, getAutoBind, getCompletedTaskCount, getDirect, getMaxIdleTime, getMaxThreads, getMinThreads, getOoBInline, getPoolSize, getPort, getRxBufSize, getSecurePort, getSelectorTimeout, getSoKeepAlive, getSoLingerOn, getSoLingerTime, getSoReuseAddress, getTaskCount, getTcpNoDelay, getTimeout, getTxBufSize, getUdpPort, getUdpRxBufSize, getUdpTxBufSize, getUseBufferPool, isListening
-
Field Details
-
sm
The string manager for this package. -
events
-
lastCheck
protected long lastCheckTimestamp of the last socket timeout check.
-
-
Constructor Details
-
NioReceiver
public NioReceiver()Default constructor.
-
-
Method Details
-
stop
public void stop()Description copied from class:ReceiverBaseStops the receiver by shutting down the executor and unregistering from JMX.- Specified by:
stopin interfaceChannelReceiver- Overrides:
stopin classReceiverBase
-
start
Description copied from class:ReceiverBaseStarts the receiver by creating the executor service and registering with JMX.- Specified by:
startin interfaceChannelReceiver- Overrides:
startin classReceiverBase- Throws:
IOException- if an I/O error occurs during startup
-
createRxTask
Description copied from interface:RxTaskPool.TaskCreatorCreates a new receive task.- Specified by:
createRxTaskin interfaceRxTaskPool.TaskCreator- Returns:
- a new receive task instance
-
bind
Binds the server socket and datagram channels to their respective ports.- Throws:
IOException- If binding fails
-
addEvent
Adds a runnable event to the selector's event queue.- Parameters:
event- The event to add
-
events
public void events()Processes all pending events in the event queue. -
cancelledKey
Handles a cancelled selection key by closing associated channels and cleaning up resources.- Parameters:
key- The cancelled selection key
-
socketTimeouts
protected void socketTimeouts()Checks for socket timeouts and handles expired connections. -
listen
Get data from channel and store in byte array send it to cluster- Throws:
IOException- IO errorException
-
stopListening
protected void stopListening()Close Selector.- See Also:
-
registerChannel
protected void registerChannel(Selector selector, SelectableChannel channel, int ops, Object attach) throws Exception Register the given channel with the given selector for the given operations of interest- Parameters:
selector- The selector to usechannel- The channelops- The operations to registerattach- Attachment object- Throws:
Exception- IO error with channel
-
run
-
readDataFromSocket
Sample data handler method for a channel with data ready to read.- Parameters:
key- A SelectionKey object associated with a channel determined by the selector to be ready for reading. If the channel returns an EOF condition, it is closed here, which automatically invalidates the associated key. The selector will then de-register the channel on the next select call.- Throws:
Exception- IO error with channel
-