public class Ctx
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
Ctx.ChannelForwardHolder
A class that holds the informations needed to forward channel in monitor sockets.
|
static class |
Ctx.Endpoint |
private static class |
Ctx.PendingConnection |
private static class |
Ctx.Side |
Modifier and Type | Field and Description |
---|---|
private boolean |
active |
private boolean |
blocky |
private java.util.Deque<java.lang.Integer> |
emptySlots |
private java.util.Map<java.lang.String,Ctx.Endpoint> |
endpoints |
private java.util.concurrent.locks.Lock |
endpointsSync |
private Errno |
errno |
private java.lang.Thread.UncaughtExceptionHandler |
exhandler |
private java.lang.Thread.UncaughtExceptionHandler |
exnotification |
private Ctx.ChannelForwardHolder |
forwardHolder |
private int |
ioThreadCount |
private java.util.List<IOThread> |
ioThreads |
private boolean |
ipv6 |
private static java.util.concurrent.atomic.AtomicInteger |
maxSocketId |
private int |
maxSockets |
private java.util.concurrent.locks.Lock |
optSync |
private MultiMap<java.lang.String,Ctx.PendingConnection> |
pendingConnections |
private Reaper |
reaper |
private static int |
REAPER_TID |
private java.util.List<java.nio.channels.Selector> |
selectors |
private java.util.concurrent.locks.Lock |
selectorSync |
private int |
slotCount |
private IMailbox[] |
slots |
private java.util.concurrent.locks.Lock |
slotSync |
private java.util.List<SocketBase> |
sockets |
private java.util.concurrent.atomic.AtomicBoolean |
starting |
(package private) static int |
TERM_TID |
private boolean |
terminating |
private Mailbox |
termMailbox |
private static int |
WAIT_FOREVER |
Constructor and Description |
---|
Ctx() |
Modifier and Type | Method and Description |
---|---|
boolean |
checkTag()
Deprecated.
use
isActive() instead |
(package private) IOThread |
chooseIoThread(long affinity) |
private void |
cleanForwarded()
Clean all empty references
|
boolean |
closeSelector(java.nio.channels.Selector selector) |
private void |
connectInprocSockets(SocketBase bindSocket,
Options bindOptions,
Ctx.PendingConnection pendingConnection,
Ctx.Side side) |
(package private) void |
connectPending(java.lang.String addr,
SocketBase bindSocket) |
java.nio.channels.Selector |
createSelector() |
SocketBase |
createSocket(int type) |
private void |
destroy() |
(package private) void |
destroySocket(SocketBase socket) |
Errno |
errno() |
(package private) Ctx.Endpoint |
findEndpoint(java.lang.String addr) |
(package private) int |
forwardChannel(java.nio.channels.SelectableChannel channel)
Forward a channel in a monitor socket.
|
int |
get(int option) |
(package private) java.nio.channels.SelectableChannel |
getForwardedChannel(java.lang.Integer handle)
Retrieve a channel, using the handle returned by
forwardChannel(SelectableChannel) . |
java.lang.Thread.UncaughtExceptionHandler |
getNotificationExceptionHandler() |
(package private) ZObject |
getReaper() |
java.lang.Thread.UncaughtExceptionHandler |
getUncaughtExceptionHandler() |
private void |
initSlots() |
boolean |
isActive() |
(package private) void |
pendConnection(java.lang.String addr,
Ctx.Endpoint endpoint,
Pipe[] pipes) |
(package private) boolean |
registerEndpoint(java.lang.String addr,
Ctx.Endpoint endpoint) |
(package private) void |
sendCommand(int tid,
Command command) |
boolean |
set(int option,
int optval) |
void |
setNotificationExceptionHandler(java.lang.Thread.UncaughtExceptionHandler handler)
In
Poller.run() , some non-fatal exceptions can be thrown. |
void |
setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler handler)
Set the handler invoked when a
Poller abruptly terminates due to an uncaught exception. |
(package private) void |
shutdown() |
void |
terminate() |
(package private) boolean |
unregisterEndpoint(java.lang.String addr,
SocketBase socket) |
(package private) void |
unregisterEndpoints(SocketBase socket) |
private static final int WAIT_FOREVER
private boolean active
private final java.util.List<SocketBase> sockets
private final java.util.Deque<java.lang.Integer> emptySlots
private final java.util.concurrent.atomic.AtomicBoolean starting
private boolean terminating
private final java.util.concurrent.locks.Lock slotSync
private final java.util.List<java.nio.channels.Selector> selectors
private Reaper reaper
private final java.util.List<IOThread> ioThreads
private int slotCount
private IMailbox[] slots
private final Mailbox termMailbox
private final java.util.Map<java.lang.String,Ctx.Endpoint> endpoints
private final java.util.concurrent.locks.Lock endpointsSync
private static java.util.concurrent.atomic.AtomicInteger maxSocketId
private int maxSockets
private int ioThreadCount
private boolean blocky
private final java.util.concurrent.locks.Lock optSync
private final java.util.concurrent.locks.Lock selectorSync
static final int TERM_TID
private static final int REAPER_TID
private final MultiMap<java.lang.String,Ctx.PendingConnection> pendingConnections
private boolean ipv6
private final Errno errno
private java.lang.Thread.UncaughtExceptionHandler exhandler
private java.lang.Thread.UncaughtExceptionHandler exnotification
private Ctx.ChannelForwardHolder forwardHolder
private void destroy() throws java.io.IOException
java.io.IOException
public boolean isActive()
terminate()
terminate() has been called.@Deprecated public boolean checkTag()
isActive()
insteadterminate()
terminate() has been called.public void terminate()
final void shutdown()
public void setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler handler)
Poller
abruptly terminates due to an uncaught exception.
It default to the value of Thread.getDefaultUncaughtExceptionHandler()
handler
- The object to use as this thread's uncaught exception handler. If null then this thread has no explicit handler.public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()
Poller
abruptly terminates due to an uncaught exception.public void setNotificationExceptionHandler(java.lang.Thread.UncaughtExceptionHandler handler)
Poller.run()
, some non-fatal exceptions can be thrown. This handler will be notified, so they can
be logged.
Default to Throwable.printStackTrace()
handler
- The object to use as this thread's handler for recoverable exceptions notifications.public java.lang.Thread.UncaughtExceptionHandler getNotificationExceptionHandler()
public boolean set(int option, int optval)
public int get(int option)
public SocketBase createSocket(int type)
private void initSlots()
void destroySocket(SocketBase socket)
public java.nio.channels.Selector createSelector()
public boolean closeSelector(java.nio.channels.Selector selector)
ZObject getReaper()
void sendCommand(int tid, Command command)
IOThread chooseIoThread(long affinity)
boolean registerEndpoint(java.lang.String addr, Ctx.Endpoint endpoint)
boolean unregisterEndpoint(java.lang.String addr, SocketBase socket)
void unregisterEndpoints(SocketBase socket)
Ctx.Endpoint findEndpoint(java.lang.String addr)
void pendConnection(java.lang.String addr, Ctx.Endpoint endpoint, Pipe[] pipes)
void connectPending(java.lang.String addr, SocketBase bindSocket)
private void connectInprocSockets(SocketBase bindSocket, Options bindOptions, Ctx.PendingConnection pendingConnection, Ctx.Side side)
public Errno errno()
int forwardChannel(java.nio.channels.SelectableChannel channel)
channel
- a channel to forwardgetForwardedChannel(Integer)
java.nio.channels.SelectableChannel getForwardedChannel(java.lang.Integer handle)
forwardChannel(SelectableChannel)
. As WeakReference are used, if the channel was discarded
and a GC ran, it will not be found and this method will return null.handle
- private void cleanForwarded()