final class org.xnio.nio.WorkerThread extends org.xnio.XnioIoThread implements org.xnio.XnioExecutor
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.xnio.nio.WorkerThread
super_class: org.xnio.XnioIoThread
{
private static final long LONGEST_DELAY;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 9223372036853
private static final java.lang.String FQCN;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean OLD_LOCKING;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean THREAD_SAFE_SELECTION_KEYS;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long START_TIME;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.nio.channels.Selector selector;
descriptor: Ljava/nio/channels/Selector;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.Object workLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Queue<java.lang.Runnable> selectorWorkQueue;
descriptor: Ljava/util/Queue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Queue<Ljava/lang/Runnable;>;
private final java.util.TreeSet<org.xnio.nio.WorkerThread$TimeKey> delayWorkQueue;
descriptor: Ljava/util/TreeSet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;
private volatile int state;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final int SHUTDOWN;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -2147483648
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<org.xnio.nio.WorkerThread> stateUpdater;
descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lorg/xnio/nio/WorkerThread;>;
volatile boolean polling;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
static final java.util.concurrent.atomic.AtomicLong seqGen;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lorg/xnio/nio/WorkerThread;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.xnio.nio.WorkerThread.$assertionsDisabled:Z
3: ldc Lorg/xnio/nio/WorkerThread;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
putstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
4: invokestatic java.lang.System.nanoTime:()J
putstatic org.xnio.nio.WorkerThread.START_TIME:J
5: ldc Lorg/xnio/nio/WorkerThread;
ldc "state"
invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
putstatic org.xnio.nio.WorkerThread.stateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
6: new org.xnio.ReadPropertyAction
dup
ldc "xnio.nio.old-locking"
ldc "false"
invokespecial org.xnio.ReadPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
putstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
7: new org.xnio.ReadPropertyAction
dup
ldc "xnio.nio.thread-safe-selection-keys"
ldc "false"
invokespecial org.xnio.ReadPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
putstatic org.xnio.nio.WorkerThread.THREAD_SAFE_SELECTION_KEYS:Z
8: new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putstatic org.xnio.nio.WorkerThread.seqGen:Ljava/util/concurrent/atomic/AtomicLong;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(org.xnio.nio.NioXnioWorker, java.nio.channels.Selector, java.lang.String, java.lang.ThreadGroup, long, int);
descriptor: (Lorg/xnio/nio/NioXnioWorker;Ljava/nio/channels/Selector;Ljava/lang/String;Ljava/lang/ThreadGroup;JI)V
flags: (0x0000)
Code:
stack=7, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 7 0: aload 0
aload 1
iload 7
aload 4
aload 3
lload 5
invokespecial org.xnio.XnioIoThread.<init>:(Lorg/xnio/XnioWorker;ILjava/lang/ThreadGroup;Ljava/lang/String;J)V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
2: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
3: aload 0
new java.util.TreeSet
dup
invokespecial java.util.TreeSet.<init>:()V
putfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
4: aload 0
aload 2
putfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
5: return
end local 7 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/xnio/nio/WorkerThread;
0 6 1 worker Lorg/xnio/nio/NioXnioWorker;
0 6 2 selector Ljava/nio/channels/Selector;
0 6 3 name Ljava/lang/String;
0 6 4 group Ljava/lang/ThreadGroup;
0 6 5 stackSize J
0 6 7 number I
MethodParameters:
Name Flags
worker final
selector final
name final
group final
stackSize final
number final
static org.xnio.nio.WorkerThread getCurrent();
descriptor: ()Lorg/xnio/nio/WorkerThread;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=0
0: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
astore 0
start local 0 1: aload 0
instanceof org.xnio.nio.WorkerThread
ifeq 2
aload 0
checkcast org.xnio.nio.WorkerThread
goto 3
StackMap locals: java.lang.Thread
StackMap stack:
2: aconst_null
StackMap locals:
StackMap stack: org.xnio.nio.WorkerThread
3: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 4 0 thread Ljava/lang/Thread;
public org.xnio.nio.NioXnioWorker getWorker();
descriptor: ()Lorg/xnio/nio/NioXnioWorker;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.xnio.XnioIoThread.getWorker:()Lorg/xnio/XnioWorker;
checkcast org.xnio.nio.NioXnioWorker
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/xnio/nio/WorkerThread;
protected org.xnio.IoFuture<org.xnio.StreamConnection> acceptTcpStreamConnection(java.net.InetSocketAddress, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap);
descriptor: (Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
1: goto 4
StackMap locals:
StackMap stack: org.xnio.ClosedWorkerException
2: astore 5
start local 5 3: new org.xnio.FailedIoFuture
dup
aload 5
invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
areturn
end local 5 4: StackMap locals:
StackMap stack:
new org.xnio.FutureResult
dup
aload 0
invokespecial org.xnio.FutureResult.<init>:(Ljava/util/concurrent/Executor;)V
astore 5
start local 5 5: iconst_0
istore 6
start local 6 6: invokestatic java.nio.channels.ServerSocketChannel.open:()Ljava/nio/channels/ServerSocketChannel;
astore 7
start local 7 7: aload 7
iconst_0
invokevirtual java.nio.channels.ServerSocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
8: aload 4
getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 10
9: aload 7
invokevirtual java.nio.channels.ServerSocketChannel.socket:()Ljava/net/ServerSocket;
aload 4
getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
iconst_m1
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokevirtual java.net.ServerSocket.setReceiveBufferSize:(I)V
10: StackMap locals: org.xnio.FutureResult int java.nio.channels.ServerSocketChannel
StackMap stack:
aload 7
invokevirtual java.nio.channels.ServerSocketChannel.socket:()Ljava/net/ServerSocket;
aload 4
getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
iconst_1
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
invokevirtual java.net.ServerSocket.setReuseAddress:(Z)V
11: aload 7
aload 1
invokevirtual java.nio.channels.ServerSocketChannel.bind:(Ljava/net/SocketAddress;)Ljava/nio/channels/ServerSocketChannel;
pop
12: aload 3
ifnull 15
new org.xnio.nio.WorkerThread$1
dup
aload 0
aload 7
invokespecial org.xnio.nio.WorkerThread$1.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/ServerSocketChannel;)V
13: aload 3
14: invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
pop
15: StackMap locals:
StackMap stack:
aload 0
aload 7
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 8
start local 8 16: new org.xnio.nio.WorkerThread$2
dup
aload 0
aload 0
aload 8
aload 7
aload 4
aload 5
aload 2
invokespecial org.xnio.nio.WorkerThread$2.<init>:(Lorg/xnio/nio/WorkerThread;Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/ServerSocketChannel;Lorg/xnio/OptionMap;Lorg/xnio/FutureResult;Lorg/xnio/ChannelListener;)V
astore 9
start local 9 17: aload 8
aload 9
invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
pop
18: aload 9
bipush 16
invokevirtual org.xnio.nio.NioHandle.resume:(I)V
19: iconst_1
istore 6
20: aload 5
new org.xnio.nio.WorkerThread$3
dup
aload 0
aload 5
aload 7
invokespecial org.xnio.nio.WorkerThread$3.<init>:(Lorg/xnio/nio/WorkerThread;Lorg/xnio/FutureResult;Ljava/nio/channels/ServerSocketChannel;)V
invokevirtual org.xnio.FutureResult.addCancelHandler:(Lorg/xnio/Cancellable;)V
21: aload 5
invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
astore 11
22: iload 6
ifne 23
aload 7
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
23: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel java.nio.channels.SelectionKey org.xnio.nio.NioHandle top org.xnio.IoFuture
StackMap stack:
aload 11
areturn
end local 9 end local 8 24: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel
StackMap stack: java.lang.Throwable
astore 10
25: iload 6
ifne 26
aload 7
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
26: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel top top java.lang.Throwable
StackMap stack:
aload 10
athrow
end local 7 end local 6 27: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult
StackMap stack: java.io.IOException
astore 6
start local 6 28: new org.xnio.FailedIoFuture
dup
aload 6
invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lorg/xnio/nio/WorkerThread;
0 29 1 destination Ljava/net/InetSocketAddress;
0 29 2 openListener Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
0 29 3 bindListener Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
0 29 4 optionMap Lorg/xnio/OptionMap;
3 4 5 e Lorg/xnio/ClosedWorkerException;
5 29 5 futureResult Lorg/xnio/FutureResult<Lorg/xnio/StreamConnection;>;
6 27 6 ok Z
7 27 7 serverChannel Ljava/nio/channels/ServerSocketChannel;
16 24 8 key Ljava/nio/channels/SelectionKey;
17 24 9 handle Lorg/xnio/nio/NioHandle;
28 29 6 e Ljava/io/IOException;
Exception table:
from to target type
0 1 2 Class org.xnio.ClosedWorkerException
7 22 24 any
5 23 27 Class java.io.IOException
24 27 27 Class java.io.IOException
Signature: (Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture<Lorg/xnio/StreamConnection;>;
MethodParameters:
Name Flags
destination final
openListener final
bindListener final
optionMap final
protected org.xnio.IoFuture<org.xnio.StreamConnection> openTcpStreamConnection(java.net.InetSocketAddress, java.net.InetSocketAddress, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap);
descriptor: (Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=14, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
1: goto 4
StackMap locals:
StackMap stack: org.xnio.ClosedWorkerException
2: astore 6
start local 6 3: new org.xnio.FailedIoFuture
dup
aload 6
invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
areturn
end local 6 4: StackMap locals:
StackMap stack:
invokestatic java.nio.channels.SocketChannel.open:()Ljava/nio/channels/SocketChannel;
astore 6
start local 6 5: iconst_0
istore 7
start local 7 6: aload 6
iconst_0
invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
7: aload 5
getstatic org.xnio.Options.TCP_OOB_INLINE:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 8
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.TCP_OOB_INLINE:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
invokevirtual java.net.Socket.setOOBInline:(Z)V
8: StackMap locals: java.nio.channels.SocketChannel int
StackMap stack:
aload 5
getstatic org.xnio.Options.TCP_NODELAY:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 9
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.TCP_NODELAY:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
invokevirtual java.net.Socket.setTcpNoDelay:(Z)V
9: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.IP_TRAFFIC_CLASS:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 10
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.IP_TRAFFIC_CLASS:Lorg/xnio/Option;
iconst_m1
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokevirtual java.net.Socket.setTrafficClass:(I)V
10: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.CLOSE_ABORT:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 11
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.CLOSE_ABORT:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
iconst_0
invokevirtual java.net.Socket.setSoLinger:(ZI)V
11: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.KEEP_ALIVE:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 12
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.KEEP_ALIVE:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
invokevirtual java.net.Socket.setKeepAlive:(Z)V
12: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 13
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
iconst_m1
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokevirtual java.net.Socket.setReceiveBufferSize:(I)V
13: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 14
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
invokevirtual java.net.Socket.setReuseAddress:(Z)V
14: StackMap locals:
StackMap stack:
aload 5
getstatic org.xnio.Options.SEND_BUFFER:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 15
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 5
getstatic org.xnio.Options.SEND_BUFFER:Lorg/xnio/Option;
iconst_m1
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokevirtual java.net.Socket.setSendBufferSize:(I)V
15: StackMap locals:
StackMap stack:
aload 0
aload 6
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 8
start local 8 16: new org.xnio.nio.NioSocketStreamConnection
dup
aload 0
aload 8
aconst_null
invokespecial org.xnio.nio.NioSocketStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Lorg/xnio/nio/ChannelClosed;)V
astore 9
start local 9 17: aload 5
getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 18
aload 9
getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
aload 5
getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.xnio.nio.NioSocketStreamConnection.setOption:(Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
pop
18: StackMap locals: java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection
StackMap stack:
aload 5
getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
ifeq 19
aload 9
getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
aload 5
getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
iconst_0
invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.xnio.nio.NioSocketStreamConnection.setOption:(Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
pop
19: StackMap locals:
StackMap stack:
aload 1
ifnonnull 20
aload 4
ifnull 22
20: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
aload 1
invokevirtual java.net.Socket.bind:(Ljava/net/SocketAddress;)V
21: aload 9
aload 4
invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
pop
22: StackMap locals:
StackMap stack:
aload 6
aload 2
invokevirtual java.nio.channels.SocketChannel.connect:(Ljava/net/SocketAddress;)Z
ifeq 30
23: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Synchronous connect"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
24: aload 0
aload 9
aload 3
invokestatic org.xnio.ChannelListeners.getChannelListenerTask:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Ljava/lang/Runnable;
invokevirtual org.xnio.nio.WorkerThread.execute:(Ljava/lang/Runnable;)V
25: new org.xnio.FinishedIoFuture
dup
aload 9
invokespecial org.xnio.FinishedIoFuture.<init>:(Ljava/lang/Object;)V
astore 10
start local 10 26: iconst_1
istore 7
27: aload 10
astore 13
28: iload 7
ifne 29
aload 6
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
29: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection org.xnio.FinishedIoFuture top top org.xnio.IoFuture
StackMap stack:
aload 13
areturn
end local 10 30: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection
StackMap stack:
getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Asynchronous connect"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
31: new org.xnio.FutureResult
dup
aload 0
invokespecial org.xnio.FutureResult.<init>:(Ljava/util/concurrent/Executor;)V
astore 10
start local 10 32: new org.xnio.nio.WorkerThread$ConnectHandle
dup
aload 0
aload 8
aload 10
aload 9
aload 3
invokespecial org.xnio.nio.WorkerThread$ConnectHandle.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Lorg/xnio/FutureResult;Lorg/xnio/nio/NioSocketStreamConnection;Lorg/xnio/ChannelListener;)V
astore 11
start local 11 33: aload 8
aload 11
invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
pop
34: aload 10
new org.xnio.nio.WorkerThread$4
dup
aload 0
aload 10
aload 9
invokespecial org.xnio.nio.WorkerThread$4.<init>:(Lorg/xnio/nio/WorkerThread;Lorg/xnio/FutureResult;Lorg/xnio/nio/NioSocketStreamConnection;)V
invokevirtual org.xnio.FutureResult.addCancelHandler:(Lorg/xnio/Cancellable;)V
35: aload 11
bipush 8
invokevirtual org.xnio.nio.WorkerThread$ConnectHandle.resume:(I)V
36: iconst_1
istore 7
37: aload 10
invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
astore 13
38: iload 7
ifne 39
aload 6
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
39: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection org.xnio.FutureResult org.xnio.nio.WorkerThread$ConnectHandle top org.xnio.IoFuture
StackMap stack:
aload 13
areturn
end local 11 end local 10 end local 9 end local 8 40: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int
StackMap stack: java.lang.Throwable
astore 12
41: iload 7
ifne 42
aload 6
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
42: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int top top top top java.lang.Throwable
StackMap stack:
aload 12
athrow
end local 7 end local 6 43: StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap
StackMap stack: java.io.IOException
astore 6
start local 6 44: new org.xnio.FailedIoFuture
dup
aload 6
invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lorg/xnio/nio/WorkerThread;
0 45 1 bindAddress Ljava/net/InetSocketAddress;
0 45 2 destinationAddress Ljava/net/InetSocketAddress;
0 45 3 openListener Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
0 45 4 bindListener Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
0 45 5 optionMap Lorg/xnio/OptionMap;
3 4 6 e Lorg/xnio/ClosedWorkerException;
5 43 6 channel Ljava/nio/channels/SocketChannel;
6 43 7 ok Z
16 40 8 key Ljava/nio/channels/SelectionKey;
17 40 9 connection Lorg/xnio/nio/NioSocketStreamConnection;
26 30 10 finishedIoFuture Lorg/xnio/FinishedIoFuture<Lorg/xnio/StreamConnection;>;
32 40 10 futureResult Lorg/xnio/FutureResult<Lorg/xnio/StreamConnection;>;
33 40 11 connectHandle Lorg/xnio/nio/WorkerThread$ConnectHandle;
44 45 6 e Ljava/io/IOException;
Exception table:
from to target type
0 1 2 Class org.xnio.ClosedWorkerException
6 28 40 any
30 38 40 any
4 29 43 Class java.io.IOException
30 39 43 Class java.io.IOException
40 43 43 Class java.io.IOException
Signature: (Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture<Lorg/xnio/StreamConnection;>;
MethodParameters:
Name Flags
bindAddress final
destinationAddress final
openListener final
bindListener final
optionMap final
org.xnio.nio.WorkerThread getNextThread();
descriptor: ()Lorg/xnio/nio/WorkerThread;
flags: (0x0000)
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.getAll:()[Lorg/xnio/nio/WorkerThread;
astore 1
start local 1 1: aload 0
invokevirtual org.xnio.nio.WorkerThread.getNumber:()I
istore 2
start local 2 2: iload 2
aload 1
arraylength
iconst_1
isub
if_icmpne 4
3: aload 1
iconst_0
aaload
areturn
4: StackMap locals: org.xnio.nio.WorkerThread[] int
StackMap stack:
aload 1
iload 2
iconst_1
iadd
aaload
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/xnio/nio/WorkerThread;
1 5 1 all [Lorg/xnio/nio/WorkerThread;
2 5 2 number I
private static org.xnio.nio.WorkerThread getPeerThread(org.xnio.XnioIoFactory);
descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
instanceof org.xnio.nio.NioXnioWorker
ifeq 5
1: aload 0
checkcast org.xnio.nio.NioXnioWorker
astore 2
start local 2 2: aload 2
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
3: aload 2
invokevirtual org.xnio.nio.NioXnioWorker.chooseThread:()Lorg/xnio/nio/WorkerThread;
astore 1
end local 2 start local 1 4: goto 10
end local 1 StackMap locals:
StackMap stack:
5: aload 0
instanceof org.xnio.nio.WorkerThread
ifeq 9
6: aload 0
checkcast org.xnio.nio.WorkerThread
astore 1
start local 1 7: aload 1
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
8: goto 10
end local 1 9: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
invokeinterface org.xnio.nio.Log.notNioProvider:()Ljava/lang/IllegalArgumentException;
athrow
start local 1 10: StackMap locals: org.xnio.nio.WorkerThread
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 peer Lorg/xnio/XnioIoFactory;
4 5 1 peerThread Lorg/xnio/nio/WorkerThread;
7 9 1 peerThread Lorg/xnio/nio/WorkerThread;
10 11 1 peerThread Lorg/xnio/nio/WorkerThread;
2 4 2 peerWorker Lorg/xnio/nio/NioXnioWorker;
Exceptions:
throws org.xnio.ClosedWorkerException
MethodParameters:
Name Flags
peer final
public org.xnio.ChannelPipe<org.xnio.StreamConnection, org.xnio.StreamConnection> createFullDuplexPipeConnection(org.xnio.XnioIoFactory);
descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=16, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
1: iconst_0
istore 2
start local 2 2: invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
astore 3
start local 3 3: aload 3
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
4: aload 3
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
5: invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
astore 4
start local 4 6: aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
7: aload 4
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
8: aload 1
invokestatic org.xnio.nio.WorkerThread.getPeerThread:(Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
astore 5
start local 5 9: aload 0
aload 3
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 6
start local 6 10: aload 5
aload 3
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 7
start local 7 11: aload 5
aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 8
start local 8 12: aload 0
aload 4
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 9
start local 9 13: new org.xnio.nio.NioPipeStreamConnection
dup
aload 0
aload 8
aload 7
invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
astore 10
start local 10 14: new org.xnio.nio.NioPipeStreamConnection
dup
aload 0
aload 6
aload 9
invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
astore 11
start local 11 15: new org.xnio.ChannelPipe
dup
aload 10
aload 11
invokespecial org.xnio.ChannelPipe.<init>:(Lorg/xnio/channels/CloseableChannel;Lorg/xnio/channels/CloseableChannel;)V
astore 12
start local 12 16: iconst_1
istore 2
17: aload 12
astore 14
18: iload 2
ifne 21
19: aload 4
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
20: aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
21: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe org.xnio.nio.WorkerThread java.nio.channels.SelectionKey java.nio.channels.SelectionKey java.nio.channels.SelectionKey java.nio.channels.SelectionKey org.xnio.nio.NioPipeStreamConnection org.xnio.nio.NioPipeStreamConnection org.xnio.ChannelPipe top org.xnio.ChannelPipe
StackMap stack:
iload 2
ifne 24
22: aload 3
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
23: aload 3
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
24: StackMap locals:
StackMap stack:
aload 14
areturn
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 25: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe
StackMap stack: java.lang.Throwable
astore 13
26: iload 2
ifne 29
27: aload 4
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
28: aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
29: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe top top top top top top top top java.lang.Throwable
StackMap stack:
aload 13
athrow
end local 4 30: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe
StackMap stack: java.lang.Throwable
astore 15
31: iload 2
ifne 34
32: aload 3
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
33: aload 3
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
34: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe top top top top top top top top top top top java.lang.Throwable
StackMap stack:
aload 15
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/xnio/nio/WorkerThread;
0 35 1 peer Lorg/xnio/XnioIoFactory;
2 35 2 ok Z
3 35 3 topPipe Ljava/nio/channels/Pipe;
6 30 4 bottomPipe Ljava/nio/channels/Pipe;
9 25 5 peerThread Lorg/xnio/nio/WorkerThread;
10 25 6 topSourceKey Ljava/nio/channels/SelectionKey;
11 25 7 topSinkKey Ljava/nio/channels/SelectionKey;
12 25 8 bottomSourceKey Ljava/nio/channels/SelectionKey;
13 25 9 bottomSinkKey Ljava/nio/channels/SelectionKey;
14 25 10 leftConnection Lorg/xnio/nio/NioPipeStreamConnection;
15 25 11 rightConnection Lorg/xnio/nio/NioPipeStreamConnection;
16 25 12 result Lorg/xnio/ChannelPipe<Lorg/xnio/StreamConnection;Lorg/xnio/StreamConnection;>;
Exception table:
from to target type
6 18 25 any
3 21 30 any
25 30 30 any
Exceptions:
throws java.io.IOException
Signature: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe<Lorg/xnio/StreamConnection;Lorg/xnio/StreamConnection;>;
MethodParameters:
Name Flags
peer
public org.xnio.ChannelPipe<org.xnio.channels.StreamSourceChannel, org.xnio.channels.StreamSinkChannel> createHalfDuplexPipe(org.xnio.XnioIoFactory);
descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
1: invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: aload 2
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
4: aload 2
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
5: aload 1
invokestatic org.xnio.nio.WorkerThread.getPeerThread:(Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
astore 4
start local 4 6: aload 0
aload 2
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 5
start local 5 7: aload 4
aload 2
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
astore 6
start local 6 8: new org.xnio.nio.NioPipeStreamConnection
dup
aload 0
aload 5
aconst_null
invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
astore 7
start local 7 9: new org.xnio.nio.NioPipeStreamConnection
dup
aload 0
aconst_null
aload 6
invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
astore 8
start local 8 10: aload 7
invokevirtual org.xnio.nio.NioPipeStreamConnection.writeClosed:()Z
pop
11: aload 8
invokevirtual org.xnio.nio.NioPipeStreamConnection.readClosed:()Z
pop
12: new org.xnio.ChannelPipe
dup
aload 7
invokevirtual org.xnio.nio.NioPipeStreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
aload 8
invokevirtual org.xnio.nio.NioPipeStreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
invokespecial org.xnio.ChannelPipe.<init>:(Lorg/xnio/channels/CloseableChannel;Lorg/xnio/channels/CloseableChannel;)V
astore 9
start local 9 13: iconst_1
istore 3
14: aload 9
astore 11
15: iload 3
ifne 18
16: aload 2
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
17: aload 2
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
18: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int org.xnio.nio.WorkerThread java.nio.channels.SelectionKey java.nio.channels.SelectionKey org.xnio.nio.NioPipeStreamConnection org.xnio.nio.NioPipeStreamConnection org.xnio.ChannelPipe top org.xnio.ChannelPipe
StackMap stack:
aload 11
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 19: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int
StackMap stack: java.lang.Throwable
astore 10
20: iload 3
ifne 23
21: aload 2
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
22: aload 2
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
23: StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int top top top top top top java.lang.Throwable
StackMap stack:
aload 10
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lorg/xnio/nio/WorkerThread;
0 24 1 peer Lorg/xnio/XnioIoFactory;
2 24 2 pipe Ljava/nio/channels/Pipe;
3 24 3 ok Z
6 19 4 peerThread Lorg/xnio/nio/WorkerThread;
7 19 5 readKey Ljava/nio/channels/SelectionKey;
8 19 6 writeKey Ljava/nio/channels/SelectionKey;
9 19 7 leftConnection Lorg/xnio/nio/NioPipeStreamConnection;
10 19 8 rightConnection Lorg/xnio/nio/NioPipeStreamConnection;
13 19 9 result Lorg/xnio/ChannelPipe<Lorg/xnio/channels/StreamSourceChannel;Lorg/xnio/channels/StreamSinkChannel;>;
Exception table:
from to target type
3 15 19 any
Exceptions:
throws java.io.IOException
Signature: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe<Lorg/xnio/channels/StreamSourceChannel;Lorg/xnio/channels/StreamSinkChannel;>;
MethodParameters:
Name Flags
peer final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=19, args_size=1
start local 0 0: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
astore 1
start local 1 1: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Starting worker thread %s"
aload 0
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
2: aload 0
getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
astore 2
start local 2 3: aload 0
getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
astore 3
start local 3 4: aload 0
getfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
astore 4
start local 4 5: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Started channel thread '%s', selector %s"
invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
invokevirtual org.xnio.XnioIoThread.getName:()Ljava/lang/String;
aload 1
invokeinterface org.xnio.nio.Log.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
6: ldc 9223372036854775807
lstore 7
start local 7 7: bipush 16
anewarray java.nio.channels.SelectionKey
astore 10
start local 10 8: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet top top long top java.nio.channels.SelectionKey[]
StackMap stack:
aload 2
dup
astore 13
monitorenter
9: aload 3
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 5
start local 5 10: aload 5
ifnonnull 24
11: aload 4
invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
astore 6
start local 6 12: ldc 9223372036854775807
lstore 7
13: aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifeq 23
14: invokestatic java.lang.System.nanoTime:()J
lstore 14
start local 14 15: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable java.util.Iterator long top java.nio.channels.SelectionKey[] top top java.lang.Object long
StackMap stack:
aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.xnio.nio.WorkerThread$TimeKey
astore 16
start local 16 16: aload 16
getfield org.xnio.nio.WorkerThread$TimeKey.deadline:J
lload 14
getstatic org.xnio.nio.WorkerThread.START_TIME:J
lsub
lcmp
ifgt 20
17: aload 3
aload 16
getfield org.xnio.nio.WorkerThread$TimeKey.command:Ljava/lang/Runnable;
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
18: aload 6
invokeinterface java.util.Iterator.remove:()V
19: goto 22
20: StackMap locals: org.xnio.nio.WorkerThread$TimeKey
StackMap stack:
aload 16
getfield org.xnio.nio.WorkerThread$TimeKey.deadline:J
lload 14
getstatic org.xnio.nio.WorkerThread.START_TIME:J
lsub
lsub
lstore 7
21: goto 23
end local 16 22: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 15
end local 14 23: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 5
end local 6 24: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] top top java.lang.Object
StackMap stack:
aload 13
monitorexit
25: goto 28
end local 5 StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet top top long top java.nio.channels.SelectionKey[] top top java.lang.Object
StackMap stack: java.lang.Throwable
26: aload 13
monitorexit
27: athrow
start local 5 28: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[]
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
pop
29: aload 5
invokestatic org.xnio.nio.WorkerThread.safeRun:(Ljava/lang/Runnable;)V
30: aload 5
ifnonnull 8
31: aload 0
getfield org.xnio.nio.WorkerThread.state:I
istore 11
start local 11 32: iload 11
ldc -2147483648
iand
ifeq 70
33: aload 2
dup
astore 13
monitorenter
34: aload 1
invokevirtual java.nio.channels.Selector.keys:()Ljava/util/Set;
invokeinterface java.util.Set.size:()I
istore 12
start local 12 35: aload 0
iload 12
ldc -2147483648
ior
putfield org.xnio.nio.WorkerThread.state:I
36: iload 12
ifne 41
aload 3
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 41
37: aload 13
monitorexit
38: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Shutting down channel thread \"%s\""
aload 0
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
39: aload 1
invokestatic org.xnio.IoUtils.safeClose:(Ljava/nio/channels/Selector;)V
40: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.closeResource:()V
return
41: StackMap locals: int int java.lang.Object
StackMap stack:
aload 13
monitorexit
42: goto 45
end local 12 StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.lang.Object
StackMap stack: java.lang.Throwable
43: aload 13
monitorexit
44: athrow
start local 12 45: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int int
StackMap stack:
aload 1
dup
astore 13
monitorenter
46: aload 1
invokevirtual java.nio.channels.Selector.keys:()Ljava/util/Set;
astore 14
start local 14 47: aload 14
dup
astore 15
monitorenter
48: aload 14
aload 10
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.nio.channels.SelectionKey[]
astore 10
49: aload 10
aload 14
invokeinterface java.util.Set.size:()I
aload 10
arraylength
aconst_null
invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
50: aload 15
monitorexit
51: goto 54
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int int java.nio.channels.Selector java.util.Set java.util.Set
StackMap stack: java.lang.Throwable
52: aload 15
monitorexit
53: athrow
end local 14 54: StackMap locals:
StackMap stack:
aload 13
monitorexit
55: goto 58
StackMap locals:
StackMap stack: java.lang.Throwable
56: aload 13
monitorexit
57: athrow
58: StackMap locals:
StackMap stack:
iconst_0
istore 13
start local 13 59: goto 68
60: StackMap locals: int
StackMap stack:
aload 10
iload 13
aaload
astore 14
start local 14 61: aload 14
ifnonnull 62
goto 69
62: StackMap locals: java.nio.channels.SelectionKey
StackMap stack:
aload 10
iload 13
aconst_null
aastore
63: aload 14
invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
checkcast org.xnio.nio.NioHandle
astore 15
start local 15 64: aload 15
ifnull 67
65: aload 14
invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
66: aload 15
invokevirtual org.xnio.nio.NioHandle.forceTermination:()V
end local 15 end local 14 67: StackMap locals:
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
68: iload 13
aload 10
arraylength
if_icmplt 60
end local 13 69: StackMap locals:
StackMap stack:
aload 10
iconst_0
aload 10
arraylength
aconst_null
invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
end local 12 70: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
pop
71: iload 11
ldc -2147483648
iand
ifeq 75
72: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Beginning select on %s (shutdown in progress)"
aload 1
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
73: aload 1
invokevirtual java.nio.channels.Selector.selectNow:()I
pop
74: goto 123
StackMap locals:
StackMap stack:
75: lload 7
ldc 9223372036854775807
lcmp
ifne 97
76: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Beginning select on %s"
aload 1
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
77: aload 0
iconst_1
putfield org.xnio.nio.WorkerThread.polling:Z
78: aconst_null
astore 13
start local 13 79: aload 2
dup
astore 14
monitorenter
80: aload 3
invokeinterface java.util.Queue.peek:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 13
81: aload 14
monitorexit
82: goto 85
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
83: aload 14
monitorexit
84: athrow
85: StackMap locals:
StackMap stack:
aload 13
ifnull 89
86: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "SelectNow, queue is not empty"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
87: aload 1
invokevirtual java.nio.channels.Selector.selectNow:()I
pop
88: goto 95
89: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Select, queue is empty"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
90: aload 1
invokevirtual java.nio.channels.Selector.select:()I
pop
end local 13 91: goto 95
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int
StackMap stack: java.lang.Throwable
92: astore 15
93: aload 0
iconst_0
putfield org.xnio.nio.WorkerThread.polling:Z
94: aload 15
athrow
95: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.xnio.nio.WorkerThread.polling:Z
96: goto 123
97: StackMap locals:
StackMap stack:
lconst_1
lload 7
ldc 1000000
ldiv
ladd
lstore 13
start local 13 98: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Beginning select on %s (with timeout)"
aload 1
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
99: aload 0
iconst_1
putfield org.xnio.nio.WorkerThread.polling:Z
100: aconst_null
astore 15
start local 15 101: aload 2
dup
astore 16
monitorenter
102: aload 3
invokeinterface java.util.Queue.peek:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 15
103: aload 16
monitorexit
104: goto 107
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top long java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
105: aload 16
monitorexit
106: athrow
107: StackMap locals:
StackMap stack:
aload 15
ifnull 111
108: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "SelectNow, queue is not empty"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
109: aload 1
invokevirtual java.nio.channels.Selector.selectNow:()I
pop
110: goto 117
111: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Select, queue is empty"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
112: aload 1
lload 13
invokevirtual java.nio.channels.Selector.select:(J)I
pop
end local 15 113: goto 117
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top long
StackMap stack: java.lang.Throwable
114: astore 17
115: aload 0
iconst_0
putfield org.xnio.nio.WorkerThread.polling:Z
116: aload 17
athrow
117: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.xnio.nio.WorkerThread.polling:Z
end local 13 118: goto 123
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int
StackMap stack: java.nio.channels.CancelledKeyException
119: pop
120: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Spurious cancelled key exception"
invokeinterface org.xnio.nio.Log.trace:(Ljava/lang/Object;)V
goto 123
121: StackMap locals:
StackMap stack: java.io.IOException
astore 13
start local 13 122: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
aload 13
invokeinterface org.xnio.nio.Log.selectionError:(Ljava/io/IOException;)V
end local 13 123: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Selected on %s"
aload 1
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
124: aload 1
dup
astore 13
monitorenter
125: aload 1
invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
astore 9
start local 9 126: aload 9
dup
astore 14
monitorenter
127: aload 9
aload 10
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.nio.channels.SelectionKey[]
astore 10
128: aload 10
aload 9
invokeinterface java.util.Set.size:()I
aload 10
arraylength
aconst_null
invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
129: aload 9
invokeinterface java.util.Set.clear:()V
130: aload 14
monitorexit
131: goto 134
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top java.nio.channels.Selector java.util.Set
StackMap stack: java.lang.Throwable
132: aload 14
monitorexit
133: athrow
134: StackMap locals:
StackMap stack:
aload 13
monitorexit
135: goto 138
end local 9 StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.nio.channels.Selector
StackMap stack: java.lang.Throwable
136: aload 13
monitorexit
137: athrow
start local 9 138: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int
StackMap stack:
iconst_0
istore 13
start local 13 139: goto 159
140: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top int
StackMap stack:
aload 10
iload 13
aaload
astore 14
start local 14 141: aload 14
ifnonnull 142
goto 8
142: StackMap locals: java.nio.channels.SelectionKey
StackMap stack:
aload 10
iload 13
aconst_null
aastore
143: aload 14
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
istore 15
start local 15 144: iload 15
ifeq 158
145: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Selected key %s for %s"
aload 14
aload 14
invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
146: aload 14
invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
checkcast org.xnio.nio.NioHandle
astore 16
start local 16 147: aload 16
ifnonnull 150
148: aload 0
aload 14
iconst_0
invokevirtual org.xnio.nio.WorkerThread.cancelKey:(Ljava/nio/channels/SelectionKey;Z)V
149: goto 158
150: StackMap locals: int org.xnio.nio.NioHandle
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
pop
151: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Calling handleReady key %s for %s"
aload 14
invokevirtual java.nio.channels.SelectionKey.readyOps:()I
aload 14
invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;ILjava/lang/Object;)V
152: aload 16
aload 14
invokevirtual java.nio.channels.SelectionKey.readyOps:()I
invokevirtual org.xnio.nio.NioHandle.handleReady:(I)V
end local 16 153: goto 158
end local 15 StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top int java.nio.channels.SelectionKey
StackMap stack: java.nio.channels.CancelledKeyException
154: pop
155: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
ldc "Skipping selection of cancelled key %s"
aload 14
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
goto 158
156: StackMap locals:
StackMap stack: java.lang.Throwable
astore 16
start local 16 157: getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
aload 16
ldc "Unexpected failure of selection of key %s"
aload 14
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)V
end local 16 end local 14 158: StackMap locals:
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
159: iload 13
aload 10
arraylength
if_icmplt 140
end local 13 end local 11 end local 9 end local 5 160: goto 8
end local 10 end local 7 end local 4 end local 3 end local 2 161: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector
StackMap stack: java.lang.Throwable
astore 18
162: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Shutting down channel thread \"%s\""
aload 0
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
163: aload 1
invokestatic org.xnio.IoUtils.safeClose:(Ljava/nio/channels/Selector;)V
164: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
invokevirtual org.xnio.nio.NioXnioWorker.closeResource:()V
165: aload 18
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 166 0 this Lorg/xnio/nio/WorkerThread;
1 166 1 selector Ljava/nio/channels/Selector;
3 161 2 lock Ljava/lang/Object;
4 161 3 workQueue Ljava/util/Queue<Ljava/lang/Runnable;>;
5 161 4 delayQueue Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;
10 26 5 task Ljava/lang/Runnable;
28 160 5 task Ljava/lang/Runnable;
12 24 6 iterator Ljava/util/Iterator<Lorg/xnio/nio/WorkerThread$TimeKey;>;
7 161 7 delayTime J
126 136 9 selectedKeys Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
138 160 9 selectedKeys Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
8 161 10 keys [Ljava/nio/channels/SelectionKey;
32 160 11 oldState I
35 43 12 keyCount I
45 70 12 keyCount I
15 23 14 now J
16 22 16 key Lorg/xnio/nio/WorkerThread$TimeKey;
47 54 14 keySet Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
59 69 13 i I
61 67 14 key Ljava/nio/channels/SelectionKey;
64 67 15 attachment Lorg/xnio/nio/NioHandle;
79 91 13 item Ljava/lang/Runnable;
98 118 13 millis J
101 113 15 item Ljava/lang/Runnable;
122 123 13 e Ljava/io/IOException;
139 160 13 i I
141 158 14 key Ljava/nio/channels/SelectionKey;
144 154 15 ops I
147 153 16 handle Lorg/xnio/nio/NioHandle;
157 158 16 t Ljava/lang/Throwable;
Exception table:
from to target type
9 25 26 any
26 27 26 any
34 38 43 any
41 42 43 any
43 44 43 any
48 51 52 any
52 53 52 any
46 55 56 any
56 57 56 any
80 82 83 any
83 84 83 any
78 92 92 any
102 104 105 any
105 106 105 any
100 114 114 any
71 118 119 Class java.nio.channels.CancelledKeyException
71 118 121 Class java.io.IOException
127 131 132 any
132 133 132 any
125 135 136 any
136 137 136 any
143 153 154 Class java.nio.channels.CancelledKeyException
143 153 156 Class java.lang.Throwable
1 38 161 any
41 161 161 any
private static void safeRun(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
ifnull 6
1: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Running task %s"
aload 0
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
2: aload 0
invokeinterface java.lang.Runnable.run:()V
3: goto 6
StackMap locals:
StackMap stack: java.lang.Throwable
4: astore 1
start local 1 5: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
aload 0
aload 1
invokeinterface org.xnio.nio.Log.taskFailed:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
end local 1 6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 command Ljava/lang/Runnable;
5 6 1 t Ljava/lang/Throwable;
Exception table:
from to target type
1 3 4 Class java.lang.Throwable
MethodParameters:
Name Flags
command final
public void execute(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.xnio.nio.WorkerThread.state:I
ldc -2147483648
iand
ifeq 2
1: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
invokeinterface org.xnio.nio.Log.threadExiting:()Ljava/util/concurrent/RejectedExecutionException;
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
dup
astore 2
monitorenter
3: aload 0
getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
aload 1
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
4: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
new java.lang.StringBuilder
dup
ldc "Added task "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
5: aload 2
monitorexit
6: goto 9
StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 0
getfield org.xnio.nio.WorkerThread.polling:Z
ifeq 12
10: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
11: goto 13
12: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
ldc "Not polling, no wakeup"
iconst_0
anewarray java.lang.Object
invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/xnio/nio/WorkerThread;
0 14 1 command Ljava/lang/Runnable;
Exception table:
from to target type
3 6 7 any
7 8 7 any
MethodParameters:
Name Flags
command final
void shutdown();
descriptor: ()V
flags: (0x0000)
Code:
stack=5, locals=2, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield org.xnio.nio.WorkerThread.state:I
istore 1
start local 1 1: iload 1
ldc -2147483648
iand
ifeq 3
2: return
3: StackMap locals: int
StackMap stack:
getstatic org.xnio.nio.WorkerThread.stateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
aload 0
iload 1
iload 1
ldc -2147483648
ior
invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
ifeq 0
4: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
aload 0
if_acmpeq 6
5: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/xnio/nio/WorkerThread;
1 7 1 oldState I
public org.xnio.XnioExecutor$Key executeAfter(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 5
start local 5 1: aload 0
getfield org.xnio.nio.WorkerThread.state:I
ldc -2147483648
iand
ifeq 3
2: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
invokeinterface org.xnio.nio.Log.threadExiting:()Ljava/util/concurrent/RejectedExecutionException;
athrow
3: StackMap locals: long
StackMap stack:
lload 5
lconst_0
lcmp
ifgt 6
4: aload 0
aload 1
invokevirtual org.xnio.nio.WorkerThread.execute:(Ljava/lang/Runnable;)V
5: getstatic org.xnio.XnioExecutor$Key.IMMEDIATE:Lorg/xnio/XnioExecutor$Key;
areturn
6: StackMap locals:
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
getstatic org.xnio.nio.WorkerThread.START_TIME:J
lsub
lload 5
ldc 9223372036853
invokestatic java.lang.Math.min:(JJ)J
ldc 1000000
lmul
ladd
lstore 7
start local 7 7: new org.xnio.nio.WorkerThread$TimeKey
dup
aload 0
lload 7
aload 1
invokespecial org.xnio.nio.WorkerThread$TimeKey.<init>:(Lorg/xnio/nio/WorkerThread;JLjava/lang/Runnable;)V
astore 9
start local 9 8: aload 0
getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
dup
astore 10
monitorenter
9: aload 0
getfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
astore 11
start local 11 10: aload 11
aload 9
invokevirtual java.util.TreeSet.add:(Ljava/lang/Object;)Z
pop
11: aload 11
invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
aload 9
if_acmpne 14
12: aload 0
getfield org.xnio.nio.WorkerThread.polling:Z
ifeq 14
13: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
14: StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable long java.util.concurrent.TimeUnit long long org.xnio.nio.WorkerThread$TimeKey java.lang.Object java.util.TreeSet
StackMap stack:
aload 9
aload 10
monitorexit
15: areturn
end local 11 16: StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable long java.util.concurrent.TimeUnit long long org.xnio.nio.WorkerThread$TimeKey java.lang.Object
StackMap stack: java.lang.Throwable
aload 10
monitorexit
17: athrow
end local 9 end local 7 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/xnio/nio/WorkerThread;
0 18 1 command Ljava/lang/Runnable;
0 18 2 time J
0 18 4 unit Ljava/util/concurrent/TimeUnit;
1 18 5 millis J
7 18 7 deadline J
8 18 9 key Lorg/xnio/nio/WorkerThread$TimeKey;
10 16 11 queue Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;
Exception table:
from to target type
9 15 16 any
16 17 16 any
MethodParameters:
Name Flags
command final
time final
unit final
public org.xnio.XnioExecutor$Key executeAtInterval(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 5
start local 5 1: new org.xnio.nio.WorkerThread$RepeatKey
dup
aload 0
aload 1
lload 5
invokespecial org.xnio.nio.WorkerThread$RepeatKey.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/lang/Runnable;J)V
astore 7
start local 7 2: aload 0
aload 7
lload 5
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual org.xnio.nio.WorkerThread.executeAfter:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
astore 8
start local 8 3: aload 7
aload 8
invokevirtual org.xnio.nio.WorkerThread$RepeatKey.setFirst:(Lorg/xnio/XnioExecutor$Key;)V
4: aload 7
areturn
end local 8 end local 7 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/xnio/nio/WorkerThread;
0 5 1 command Ljava/lang/Runnable;
0 5 2 time J
0 5 4 unit Ljava/util/concurrent/TimeUnit;
1 5 5 millis J
2 5 7 repeatKey Lorg/xnio/nio/WorkerThread$RepeatKey;
3 5 8 firstKey Lorg/xnio/XnioExecutor$Key;
MethodParameters:
Name Flags
command final
time final
unit final
java.nio.channels.SelectionKey registerChannel(java.nio.channels.spi.AbstractSelectableChannel);
descriptor: (Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
flags: (0x0000)
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
aload 0
if_acmpne 2
1: aload 1
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
iconst_0
invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
areturn
2: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.WorkerThread.THREAD_SAFE_SELECTION_KEYS:Z
ifeq 9
3: aload 1
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
iconst_0
invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
astore 3
4: aload 0
getfield org.xnio.nio.WorkerThread.polling:Z
ifeq 5
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
5: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel top java.nio.channels.SelectionKey
StackMap stack:
aload 3
areturn
6: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel
StackMap stack: java.lang.Throwable
astore 2
7: aload 0
getfield org.xnio.nio.WorkerThread.polling:Z
ifeq 8
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
8: StackMap locals: java.lang.Throwable
StackMap stack:
aload 2
athrow
9: StackMap locals:
StackMap stack:
new org.xnio.nio.WorkerThread$SynchTask
dup
aload 0
invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
astore 2
start local 2 10: aload 0
aload 2
invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
11: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
12: aload 1
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
iconst_0
invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
astore 4
13: aload 2
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
14: aload 4
areturn
15: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel org.xnio.nio.WorkerThread$SynchTask
StackMap stack: java.lang.Throwable
astore 3
16: aload 2
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
17: aload 3
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/xnio/nio/WorkerThread;
0 18 1 channel Ljava/nio/channels/spi/AbstractSelectableChannel;
10 18 2 task Lorg/xnio/nio/WorkerThread$SynchTask;
Exception table:
from to target type
3 4 6 any
11 13 15 any
Exceptions:
throws java.nio.channels.ClosedChannelException
MethodParameters:
Name Flags
channel final
void queueTask(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
aload 1
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
2: aload 2
monitorexit
3: goto 6
StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 2
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/xnio/nio/WorkerThread;
0 7 1 task Ljava/lang/Runnable;
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
task final
void cancelKey(java.nio.channels.SelectionKey, boolean);
descriptor: (Ljava/nio/channels/SelectionKey;Z)V
flags: (0x0000)
Code:
stack=7, locals=7, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.xnio.nio.WorkerThread.$assertionsDisabled:Z
ifne 1
aload 1
invokevirtual java.nio.channels.SelectionKey.selector:()Ljava/nio/channels/Selector;
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
if_acmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
astore 3
start local 3 2: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
aload 0
if_acmpne 13
3: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aconst_null
ldc "Cancelling key %s of %s (same thread)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
4: aload 1
invokevirtual java.nio.channels.SelectionKey.cancel:()V
5: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.selectNow:()I
pop
6: goto 40
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectableChannel
StackMap stack: java.io.IOException
7: astore 4
start local 4 8: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
aload 4
invokeinterface org.xnio.nio.Log.selectionError:(Ljava/io/IOException;)V
end local 4 9: goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 4
start local 4 11: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aload 4
ldc "Error cancelling key %s of %s (same thread)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 4 12: goto 40
StackMap locals:
StackMap stack:
13: getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
ifeq 28
14: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aconst_null
ldc "Cancelling key %s of %s (same thread, old locking)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
15: new org.xnio.nio.WorkerThread$SynchTask
dup
aload 0
invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
astore 4
start local 4 16: aload 0
aload 4
invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
17: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
18: aload 1
invokevirtual java.nio.channels.SelectionKey.cancel:()V
19: goto 26
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectableChannel org.xnio.nio.WorkerThread$SynchTask
StackMap stack: java.lang.Throwable
20: astore 5
start local 5 21: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aload 5
ldc "Error cancelling key %s of %s (same thread, old locking)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 5 22: aload 4
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
goto 40
23: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
24: aload 4
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
25: aload 6
athrow
26: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
end local 4 27: goto 40
28: StackMap locals:
StackMap stack:
getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aconst_null
ldc "Cancelling key %s of %s (other thread)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
29: aload 1
invokevirtual java.nio.channels.SelectionKey.cancel:()V
30: iload 2
ifeq 36
31: new org.xnio.nio.WorkerThread$SelectNowTask
dup
aload 0
invokespecial org.xnio.nio.WorkerThread$SelectNowTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
astore 4
start local 4 32: aload 0
aload 4
invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
33: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
34: aload 4
invokevirtual org.xnio.nio.WorkerThread$SelectNowTask.doWait:()V
end local 4 35: goto 40
36: StackMap locals:
StackMap stack:
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
37: goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
38: astore 4
start local 4 39: getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
aload 4
ldc "Error cancelling key %s of %s (other thread)"
aload 1
aload 3
invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 4 40: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lorg/xnio/nio/WorkerThread;
0 41 1 key Ljava/nio/channels/SelectionKey;
0 41 2 block Z
2 41 3 channel Ljava/nio/channels/SelectableChannel;
8 9 4 e Ljava/io/IOException;
11 12 4 t Ljava/lang/Throwable;
16 27 4 task Lorg/xnio/nio/WorkerThread$SynchTask;
21 22 5 t Ljava/lang/Throwable;
32 35 4 task Lorg/xnio/nio/WorkerThread$SelectNowTask;
39 40 4 t Ljava/lang/Throwable;
Exception table:
from to target type
5 6 7 Class java.io.IOException
4 9 10 Class java.lang.Throwable
17 19 20 Class java.lang.Throwable
17 22 23 any
29 37 38 Class java.lang.Throwable
MethodParameters:
Name Flags
key final
block final
void setOps(java.nio.channels.SelectionKey, int);
descriptor: (Ljava/nio/channels/SelectionKey;I)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
aload 0
if_acmpne 9
1: aload 1
dup
astore 3
monitorenter
2: aload 1
aload 1
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 2
ior
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
3: aload 3
monitorexit
4: goto 35
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
StackMap stack: java.lang.Throwable
5: aload 3
monitorexit
6: athrow
7: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int
StackMap stack: java.nio.channels.CancelledKeyException
pop
8: goto 35
StackMap locals:
StackMap stack:
9: getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
ifeq 26
10: new org.xnio.nio.WorkerThread$SynchTask
dup
aload 0
invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
astore 3
start local 3 11: aload 0
aload 3
invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
12: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
13: aload 1
dup
astore 4
monitorenter
14: aload 1
aload 1
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 2
ior
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
15: aload 4
monitorexit
16: goto 24
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask java.nio.channels.SelectionKey
StackMap stack: java.lang.Throwable
17: aload 4
monitorexit
18: athrow
19: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask
StackMap stack: java.nio.channels.CancelledKeyException
pop
20: aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
goto 35
21: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
22: aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
23: aload 5
athrow
24: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
end local 3 25: goto 35
26: StackMap locals:
StackMap stack:
aload 1
dup
astore 3
monitorenter
27: aload 1
aload 1
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 2
ior
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
28: aload 3
monitorexit
29: goto 32
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
StackMap stack: java.lang.Throwable
30: aload 3
monitorexit
31: athrow
32: StackMap locals:
StackMap stack:
aload 0
getfield org.xnio.nio.WorkerThread.polling:Z
ifeq 35
aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
33: goto 35
StackMap locals:
StackMap stack: java.nio.channels.CancelledKeyException
34: pop
35: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lorg/xnio/nio/WorkerThread;
0 36 1 key Ljava/nio/channels/SelectionKey;
0 36 2 ops I
11 25 3 task Lorg/xnio/nio/WorkerThread$SynchTask;
Exception table:
from to target type
2 4 5 any
5 6 5 any
1 7 7 Class java.nio.channels.CancelledKeyException
14 16 17 any
17 18 17 any
12 19 19 Class java.nio.channels.CancelledKeyException
12 20 21 any
27 29 30 any
30 31 30 any
26 33 34 Class java.nio.channels.CancelledKeyException
MethodParameters:
Name Flags
key final
ops final
void clearOps(java.nio.channels.SelectionKey, int);
descriptor: (Ljava/nio/channels/SelectionKey;I)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
aload 0
if_acmpeq 1
getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
ifne 9
1: StackMap locals:
StackMap stack:
aload 1
dup
astore 3
monitorenter
2: aload 1
aload 1
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 2
iconst_m1
ixor
iand
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
3: aload 3
monitorexit
4: goto 24
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
StackMap stack: java.lang.Throwable
5: aload 3
monitorexit
6: athrow
7: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int
StackMap stack: java.nio.channels.CancelledKeyException
pop
8: goto 24
9: StackMap locals:
StackMap stack:
new org.xnio.nio.WorkerThread$SynchTask
dup
aload 0
invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
astore 3
start local 3 10: aload 0
aload 3
invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
11: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
12: aload 1
dup
astore 4
monitorenter
13: aload 1
aload 1
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 2
iconst_m1
ixor
iand
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
14: aload 4
monitorexit
15: goto 23
StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask java.nio.channels.SelectionKey
StackMap stack: java.lang.Throwable
16: aload 4
monitorexit
17: athrow
18: StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask
StackMap stack: java.nio.channels.CancelledKeyException
pop
19: aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
goto 24
20: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
21: aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
22: aload 5
athrow
23: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
end local 3 24: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lorg/xnio/nio/WorkerThread;
0 25 1 key Ljava/nio/channels/SelectionKey;
0 25 2 ops I
10 24 3 task Lorg/xnio/nio/WorkerThread$SynchTask;
Exception table:
from to target type
2 4 5 any
5 6 5 any
1 7 7 Class java.nio.channels.CancelledKeyException
13 15 16 any
16 17 16 any
11 18 18 Class java.nio.channels.CancelledKeyException
11 19 20 any
MethodParameters:
Name Flags
key final
ops final
java.nio.channels.Selector getSelector();
descriptor: ()Ljava/nio/channels/Selector;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/xnio/nio/WorkerThread;
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/xnio/nio/WorkerThread;
0 2 1 obj Ljava/lang/Object;
MethodParameters:
Name Flags
obj final
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/xnio/nio/WorkerThread;
public org.xnio.XnioWorker getWorker();
descriptor: ()Lorg/xnio/XnioWorker;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "WorkerThread.java"
NestMembers:
org.xnio.nio.WorkerThread$1 org.xnio.nio.WorkerThread$2 org.xnio.nio.WorkerThread$3 org.xnio.nio.WorkerThread$4 org.xnio.nio.WorkerThread$ConnectHandle org.xnio.nio.WorkerThread$RepeatKey org.xnio.nio.WorkerThread$SelectNowTask org.xnio.nio.WorkerThread$SynchTask org.xnio.nio.WorkerThread$TimeKey
InnerClasses:
public abstract SinkChannel = java.nio.channels.Pipe$SinkChannel of java.nio.channels.Pipe
public abstract SourceChannel = java.nio.channels.Pipe$SourceChannel of java.nio.channels.Pipe
public final Level = org.jboss.logging.Logger$Level of org.jboss.logging.Logger
public abstract Key = org.xnio.XnioExecutor$Key of org.xnio.XnioExecutor
org.xnio.nio.WorkerThread$1
org.xnio.nio.WorkerThread$2
org.xnio.nio.WorkerThread$3
org.xnio.nio.WorkerThread$4
final ConnectHandle = org.xnio.nio.WorkerThread$ConnectHandle of org.xnio.nio.WorkerThread
RepeatKey = org.xnio.nio.WorkerThread$RepeatKey of org.xnio.nio.WorkerThread
final SelectNowTask = org.xnio.nio.WorkerThread$SelectNowTask of org.xnio.nio.WorkerThread
final SynchTask = org.xnio.nio.WorkerThread$SynchTask of org.xnio.nio.WorkerThread
final TimeKey = org.xnio.nio.WorkerThread$TimeKey of org.xnio.nio.WorkerThread