public class org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread extends org.apache.zookeeper.server.NIOServerCnxnFactory$AbstractSelectThread
{
private final int id;
private final java.util.Queue acceptedQueue;
private final java.util.Queue updateQueue;
final org.apache.zookeeper.server.NIOServerCnxnFactory this$0;
public void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory, int) throws java.io.IOException
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.String v;
java.util.concurrent.LinkedBlockingQueue v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
v := @parameter: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: int;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0> = v;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("NIOServerCxnFactory.SelectorThread-\u0001");
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AbstractSelectThread: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory,java.lang.String)>(v, v);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: int id> = v;
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue acceptedQueue> = v;
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue updateQueue> = v;
return;
}
public boolean addAcceptedConnection(java.nio.channels.SocketChannel)
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.SocketChannel v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Queue v;
boolean v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
v := @parameter: java.nio.channels.SocketChannel;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue acceptedQueue>;
v = interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
if v != 0 goto label;
label:
return 0;
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void wakeupSelector()>();
return 1;
}
public boolean addInterestOpsUpdateRequest(java.nio.channels.SelectionKey)
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Queue v;
boolean v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
v := @parameter: java.nio.channels.SelectionKey;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue updateQueue>;
v = interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
if v != 0 goto label;
label:
return 0;
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void wakeupSelector()>();
return 1;
}
public void run()
{
java.lang.Throwable v;
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.Selector v;
org.apache.zookeeper.server.NIOServerCnxnFactory v, v, v;
org.apache.zookeeper.server.ServerCnxn$DisconnectReason v;
boolean v, v, v;
org.slf4j.Logger v, v, v, v;
java.util.Iterator v;
java.util.Set v;
java.lang.RuntimeException v;
java.lang.Exception v;
java.lang.Object v, v, v;
java.util.Queue v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
label:
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void select()>();
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void processAcceptedConnections()>();
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void processInterestOpsUpdateRequests()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Ignoring unexpected runtime exception", v);
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Ignoring unexpected exception", v);
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set keys()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attachment()>();
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: boolean isSelectable()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.ServerCnxn$DisconnectReason: org.apache.zookeeper.server.ServerCnxn$DisconnectReason SERVER_SHUTDOWN>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: void close(org.apache.zookeeper.server.ServerCnxn$DisconnectReason)>(v);
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void cleanupSelectionKey(java.nio.channels.SelectionKey)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue acceptedQueue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void fastCloseSock(java.nio.channels.SocketChannel)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue updateQueue>;
interfaceinvoke v.<java.util.Queue: void clear()>();
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void closeSelector()>();
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void stop()>();
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("selector thread exitted run method");
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void closeSelector()>();
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void stop()>();
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("selector thread exitted run method");
throw v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void select()
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.Selector v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.Integer v;
java.util.ArrayList v;
int v;
boolean v, v, v, v, v;
org.slf4j.Logger v, v;
java.util.Iterator v;
java.util.Set v;
java.io.IOException v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: int select()>();
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
staticinvoke <java.util.Collections: void shuffle(java.util.List)>(v);
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isValid()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void cleanupSelectionKey(java.nio.channels.SelectionKey)>(v);
goto label;
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isReadable()>();
if v != 0 goto label;
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isWritable()>();
if v == 0 goto label;
label:
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void handleIO(java.nio.channels.SelectionKey)>(v);
goto label;
label:
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: int readyOps()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("Unexpected ops in select {}", v);
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Ignoring IOException while selecting", v);
label:
return;
catch java.io.IOException from label to label with label;
}
private void handleIO(java.nio.channels.SelectionKey)
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.server.NIOServerCnxnFactory v, v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest v;
java.lang.Object v;
org.apache.zookeeper.server.WorkerService v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
v := @parameter: java.nio.channels.SelectionKey;
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory,org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread,java.nio.channels.SelectionKey)>(v, v, v);
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attachment()>();
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: void disableSelectable()>();
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(0);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void touchCnxn(org.apache.zookeeper.server.NIOServerCnxn)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
virtualinvoke v.<org.apache.zookeeper.server.WorkerService: void schedule(org.apache.zookeeper.server.WorkerService$WorkRequest)>(v);
return;
}
private void processAcceptedConnections()
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.SelectionKey v;
java.nio.channels.Selector v;
org.apache.zookeeper.server.NIOServerCnxnFactory v, v, v;
java.io.IOException v;
org.apache.zookeeper.server.NIOServerCnxn v;
java.lang.Object v;
java.util.Queue v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue acceptedQueue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
v = null;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.nio.channels.SelectionKey register(java.nio.channels.Selector,int)>(v, 1);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxn createConnection(java.nio.channels.SocketChannel,java.nio.channels.SelectionKey,org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread)>(v, v, v);
virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attach(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void addCnxn(org.apache.zookeeper.server.NIOServerCnxn)>(v);
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void cleanupSelectionKey(java.nio.channels.SelectionKey)>(v);
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void fastCloseSock(java.nio.channels.SocketChannel)>(v);
goto label;
label:
return;
catch java.io.IOException from label to label with label;
}
private void processInterestOpsUpdateRequests()
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
int v;
java.lang.Object v, v;
java.util.Queue v;
boolean v, v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: org.apache.zookeeper.server.NIOServerCnxnFactory this$0>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.util.Queue updateQueue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isValid()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void cleanupSelectionKey(java.nio.channels.SelectionKey)>(v);
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attachment()>();
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: boolean isSelectable()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: int getInterestOps()>();
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
goto label;
label:
return;
}
}