public class org.apache.zookeeper.server.NIOServerCnxnFactory extends org.apache.zookeeper.server.ServerCnxnFactory
{
private static final org.slf4j.Logger LOG;
public static final java.lang.String ZOOKEEPER_NIO_SESSIONLESS_CNXN_TIMEOUT;
public static final java.lang.String ZOOKEEPER_NIO_NUM_SELECTOR_THREADS;
public static final java.lang.String ZOOKEEPER_NIO_NUM_WORKER_THREADS;
public static final java.lang.String ZOOKEEPER_NIO_DIRECT_BUFFER_BYTES;
public static final java.lang.String ZOOKEEPER_NIO_SHUTDOWN_TIMEOUT;
java.nio.channels.ServerSocketChannel ss;
private static final java.lang.ThreadLocal directBuffer;
private final java.util.concurrent.ConcurrentHashMap ipMap;
protected int maxClientCnxns;
int listenBacklog;
int sessionlessCnxnTimeout;
private org.apache.zookeeper.server.ExpiryQueue cnxnExpiryQueue;
protected org.apache.zookeeper.server.WorkerService workerPool;
private static int directBufferBytes;
private int numSelectorThreads;
private int numWorkerThreads;
private long workerShutdownTimeoutMS;
private volatile boolean stopped;
private org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread;
private org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread;
private final java.util.Set selectorThreads;
public static java.nio.ByteBuffer getDirectBuffer()
{
int v;
java.lang.Object v;
java.lang.ThreadLocal v;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: int directBufferBytes>;
if v <= 0 goto label;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: java.lang.ThreadLocal directBuffer>;
v = virtualinvoke v.<java.lang.ThreadLocal: java.lang.Object get()>();
goto label;
label:
v = null;
label:
return v;
}
public void <init>()
{
java.util.HashSet v;
int v;
java.util.concurrent.ConcurrentHashMap v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
specialinvoke v.<org.apache.zookeeper.server.ServerCnxnFactory: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.concurrent.ConcurrentHashMap ipMap> = v;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int maxClientCnxns> = 60;
v = (int) -1;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int listenBacklog> = v;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped> = 1;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads> = v;
return;
}
public void configure(java.net.InetSocketAddress, int, int, boolean) throws java.io.IOException
{
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.net.SocketAddress v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.Integer v, v, v;
java.net.ServerSocket v, v, v;
java.lang.Long v;
boolean v;
java.lang.Runtime v;
org.apache.zookeeper.server.ExpiryQueue v;
java.util.Set v, v;
java.net.InetSocketAddress v;
float v;
org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread v;
long v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v;
double v;
org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread v;
java.lang.UnsupportedOperationException v;
org.slf4j.Logger v, v, v;
java.io.IOException v;
java.nio.channels.ServerSocketChannel v, v, v, v, v, v, v;
java.lang.Comparable v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.net.InetSocketAddress;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
if v == 0 goto label;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("SSL isn\'t supported in NIOServerCnxn");
throw v;
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void configureSaslLogin()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int maxClientCnxns> = v;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void initMaxCnxns()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("zookeeper.nio.sessionlessCnxnTimeout", 10000);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int sessionlessCnxnTimeout> = v;
v = new org.apache.zookeeper.server.ExpiryQueue;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int sessionlessCnxnTimeout>;
specialinvoke v.<org.apache.zookeeper.server.ExpiryQueue: void <init>(int)>(v);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ExpiryQueue cnxnExpiryQueue> = v;
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory)>(v);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread> = v;
v = staticinvoke <java.lang.Runtime: java.lang.Runtime getRuntime()>();
v = virtualinvoke v.<java.lang.Runtime: int availableProcessors()>();
v = v / 2.0F;
v = staticinvoke <java.lang.Math: double sqrt(double)>(v);
v = staticinvoke <java.lang.Math: int max(int,int)>(v, 1);
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("zookeeper.nio.numSelectorThreads", v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numSelectorThreads> = v;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numSelectorThreads>;
if v >= 1 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("numSelectorThreads must be at least 1");
throw v;
label:
v = 2 * v;
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("zookeeper.nio.numWorkerThreads", v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numWorkerThreads> = v;
v = staticinvoke <java.lang.Long: java.lang.Long getLong(java.lang.String,long)>("zookeeper.nio.shutdownTimeout", 5000L);
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: long workerShutdownTimeoutMS> = v;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int sessionlessCnxnTimeout>;
v = v / 1000;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numSelectorThreads>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numWorkerThreads>;
if v <= 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numWorkerThreads>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
goto label;
label:
v = "no";
label:
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: int directBufferBytes>;
if v != 0 goto label;
v = "gathered writes.";
goto label;
label:
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: int directBufferBytes>;
v = v / 1024;
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[])>("\u kB direct buffers.");
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int,java.lang.Comparable,java.lang.String)>(v, v, v, 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[])>("Configuring NIO connection handler with \u0001s sessionless connection timeout, \u selector thread(s), \u worker threads, and \u0001");
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
v = 0;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numSelectorThreads>;
if v >= v goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory,int)>(v, v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int listenBacklog> = v;
v = staticinvoke <java.nio.channels.ServerSocketChannel: java.nio.channels.ServerSocketChannel open()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss> = v;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
virtualinvoke v.<java.net.ServerSocket: void setReuseAddress(boolean)>(1);
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("binding to port {}", v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int listenBacklog>;
v = (int) -1;
if v != v goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
virtualinvoke v.<java.net.ServerSocket: void bind(java.net.SocketAddress)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int listenBacklog>;
virtualinvoke v.<java.net.ServerSocket: void bind(java.net.SocketAddress,int)>(v, v);
label:
v = virtualinvoke v.<java.net.InetSocketAddress: int getPort()>();
if v != 0 goto label;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.SocketAddress getLocalAddress()>();
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("bound to port {}", v);
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.nio.channels.SelectableChannel configureBlocking(boolean)>(0);
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory,java.nio.channels.ServerSocketChannel,java.net.InetSocketAddress,java.util.Set)>(v, v, v, v);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread> = v;
return;
}
private void tryClose(java.nio.channels.ServerSocketChannel)
{
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.nio.channels.ServerSocketChannel v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.nio.channels.ServerSocketChannel;
return;
}
public void reconfigure(java.net.InetSocketAddress)
{
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.net.ServerSocket v, v;
java.lang.Thread v;
org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread v, v, v, v, v;
org.slf4j.Logger v, v, v;
java.util.Set v;
java.io.IOException v;
java.net.InetSocketAddress v;
java.nio.channels.ServerSocketChannel v, v, v, v, v, v;
java.lang.InterruptedException v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.net.InetSocketAddress;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void setReconfiguring()>();
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void tryClose(java.nio.channels.ServerSocketChannel)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void wakeupSelector()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void join()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Error joining old acceptThread when reconfiguring client port.", v);
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
v = staticinvoke <java.nio.channels.ServerSocketChannel: java.nio.channels.ServerSocketChannel open()>();
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss> = v;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
virtualinvoke v.<java.net.ServerSocket: void setReuseAddress(boolean)>(1);
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("binding to port {}", v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
virtualinvoke v.<java.net.ServerSocket: void bind(java.net.SocketAddress)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.nio.channels.SelectableChannel configureBlocking(boolean)>(0);
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void <init>(org.apache.zookeeper.server.NIOServerCnxnFactory,java.nio.channels.ServerSocketChannel,java.net.InetSocketAddress,java.util.Set)>(v, v, v, v);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread> = v;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void start()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Error reconfiguring client port to {}", v, v);
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void tryClose(java.nio.channels.ServerSocketChannel)>(v);
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.io.IOException from label to label with label;
}
public int getMaxClientCnxnsPerHost()
{
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int maxClientCnxns>;
return v;
}
public void setMaxClientCnxnsPerHost(int)
{
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: int;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int maxClientCnxns> = v;
return;
}
public int getSocketListenBacklog()
{
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int listenBacklog>;
return v;
}
public void start()
{
org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
int v;
org.apache.zookeeper.server.WorkerService v, v;
boolean v;
org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread v, v;
java.util.Iterator v;
java.lang.Thread$State v, v, v, v, v, v;
java.util.Set v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped> = 0;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
if v != null goto label;
v = new org.apache.zookeeper.server.WorkerService;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: int numWorkerThreads>;
specialinvoke v.<org.apache.zookeeper.server.WorkerService: void <init>(java.lang.String,int,boolean)>("NIOWorker", v, 0);
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool> = v;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
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.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: java.lang.Thread$State getState()>();
v = <java.lang.Thread$State: java.lang.Thread$State NEW>;
if v != v goto label;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void start()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: java.lang.Thread$State getState()>();
v = <java.lang.Thread$State: java.lang.Thread$State NEW>;
if v != v goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void start()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread>;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread: java.lang.Thread$State getState()>();
v = <java.lang.Thread$State: java.lang.Thread$State NEW>;
if v != v goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread: void start()>();
label:
return;
}
public void startup(org.apache.zookeeper.server.ZooKeeperServer, boolean) throws java.io.IOException, java.lang.InterruptedException
{
org.apache.zookeeper.server.NIOServerCnxnFactory v;
org.apache.zookeeper.server.ZooKeeperServer v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: org.apache.zookeeper.server.ZooKeeperServer;
v := @parameter: boolean;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void start()>();
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void setZooKeeperServer(org.apache.zookeeper.server.ZooKeeperServer)>(v);
if v == 0 goto label;
virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: void startdata()>();
virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: void startup()>();
label:
return;
}
public java.net.InetSocketAddress getLocalAddress()
{
java.net.ServerSocket v;
java.net.SocketAddress v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.nio.channels.ServerSocketChannel v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
v = virtualinvoke v.<java.net.ServerSocket: java.net.SocketAddress getLocalSocketAddress()>();
return v;
}
public int getLocalPort()
{
java.net.ServerSocket v;
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.nio.channels.ServerSocketChannel v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
v = virtualinvoke v.<java.nio.channels.ServerSocketChannel: java.net.ServerSocket socket()>();
v = virtualinvoke v.<java.net.ServerSocket: int getLocalPort()>();
return v;
}
public boolean removeCnxn(org.apache.zookeeper.server.NIOServerCnxn)
{
org.apache.zookeeper.server.ExpiryQueue v;
java.util.concurrent.ConcurrentHashMap v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
java.net.InetAddress v;
org.apache.zookeeper.server.NIOServerCnxn v;
java.lang.Object v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: org.apache.zookeeper.server.NIOServerCnxn;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
v = interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ExpiryQueue cnxnExpiryQueue>;
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.lang.Long remove(java.lang.Object)>(v);
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void removeCnxnFromSessionMap(org.apache.zookeeper.server.ServerCnxn)>(v);
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: java.net.InetAddress getSocketAddress()>();
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.concurrent.ConcurrentHashMap ipMap>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void unregisterConnection(org.apache.zookeeper.server.ServerCnxn)>(v);
return 1;
}
public void touchCnxn(org.apache.zookeeper.server.NIOServerCnxn)
{
org.apache.zookeeper.server.ExpiryQueue v;
int v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
org.apache.zookeeper.server.NIOServerCnxn v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: org.apache.zookeeper.server.NIOServerCnxn;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ExpiryQueue cnxnExpiryQueue>;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: int getSessionTimeout()>();
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.lang.Long update(java.lang.Object,int)>(v, v);
return;
}
private void addCnxn(org.apache.zookeeper.server.NIOServerCnxn) throws java.io.IOException
{
java.util.concurrent.ConcurrentHashMap v, v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
java.io.IOException v;
java.net.InetAddress v;
org.apache.zookeeper.server.NIOServerCnxn v;
java.lang.Object v, v;
java.lang.String v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: org.apache.zookeeper.server.NIOServerCnxn;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: java.net.InetAddress getSocketAddress()>();
if v != null goto label;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.zookeeper.server.NIOServerCnxn)>(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[])>("Socket of \u has been closed");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.concurrent.ConcurrentHashMap ipMap>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(2);
v = staticinvoke <java.util.Collections: java.util.Set newSetFromMap(java.util.Map)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.concurrent.ConcurrentHashMap ipMap>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
if v == null goto label;
v = v;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void touchCnxn(org.apache.zookeeper.server.NIOServerCnxn)>(v);
return;
}
protected org.apache.zookeeper.server.NIOServerCnxn createConnection(java.nio.channels.SocketChannel, java.nio.channels.SelectionKey, org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread) throws java.io.IOException
{
org.apache.zookeeper.server.ZooKeeperServer v;
org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread v;
java.nio.channels.SocketChannel v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
org.apache.zookeeper.server.NIOServerCnxn v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.nio.channels.SocketChannel;
v := @parameter: java.nio.channels.SelectionKey;
v := @parameter: org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread;
v = new org.apache.zookeeper.server.NIOServerCnxn;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ZooKeeperServer zkServer>;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxn: void <init>(org.apache.zookeeper.server.ZooKeeperServer,java.nio.channels.SocketChannel,java.nio.channels.SelectionKey,org.apache.zookeeper.server.NIOServerCnxnFactory,org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread)>(v, v, v, v, v);
return v;
}
private int getClientCnxnCount(java.net.InetAddress)
{
java.net.InetAddress v;
int v;
java.util.concurrent.ConcurrentHashMap v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.net.InetAddress;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.concurrent.ConcurrentHashMap ipMap>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
return 0;
label:
v = interfaceinvoke v.<java.util.Set: int size()>();
return v;
}
public void closeAll(org.apache.zookeeper.server.ServerCnxn$DisconnectReason)
{
org.apache.zookeeper.server.ServerCnxn$DisconnectReason v;
java.util.Iterator v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
java.lang.Object v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: org.apache.zookeeper.server.ServerCnxn$DisconnectReason;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
goto label;
label:
return;
}
public void stop()
{
org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
org.apache.zookeeper.server.WorkerService v, v;
boolean v, v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread v, v, v, v;
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Set v;
java.io.IOException v;
java.nio.channels.ServerSocketChannel v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v.<org.apache.zookeeper.server.NIOServerCnxnFactory: boolean stopped> = 1;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.nio.channels.ServerSocketChannel ss>;
virtualinvoke v.<java.nio.channels.ServerSocketChannel: void close()>();
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)>("Error closing listen socket", v);
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
v = virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: boolean isAlive()>();
if v == 0 goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void wakeupSelector()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void closeSelector()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread expirerThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$ConnectionExpirerThread: void interrupt()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
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.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: boolean isAlive()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void wakeupSelector()>();
goto label;
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void closeSelector()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
virtualinvoke v.<org.apache.zookeeper.server.WorkerService: void stop()>();
label:
return;
catch java.io.IOException from label to label with label;
}
public void shutdown()
{
org.slf4j.Logger v, v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.Exception v;
org.apache.zookeeper.Login v, v;
org.apache.zookeeper.server.ServerCnxn$DisconnectReason v;
org.apache.zookeeper.server.ZooKeeperServer v, v;
java.lang.InterruptedException v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
label:
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void stop()>();
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void join()>();
v = <org.apache.zookeeper.server.ServerCnxn$DisconnectReason: org.apache.zookeeper.server.ServerCnxn$DisconnectReason SERVER_SHUTDOWN>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory: void closeAll(org.apache.zookeeper.server.ServerCnxn$DisconnectReason)>(v);
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.Login login>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.Login login>;
virtualinvoke v.<org.apache.zookeeper.Login: void shutdown()>();
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 interrupted exception during shutdown", 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 during shutdown", v);
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ZooKeeperServer zkServer>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ZooKeeperServer zkServer>;
virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: void shutdown()>();
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
}
public void join() throws java.lang.InterruptedException
{
org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread v, v;
java.util.Iterator v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
long v;
java.lang.Object v;
org.apache.zookeeper.server.WorkerService v, v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread acceptThread>;
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread: void join()>();
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set selectorThreads>;
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()>();
virtualinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread: void join()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.WorkerService workerPool>;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: long workerShutdownTimeoutMS>;
virtualinvoke v.<org.apache.zookeeper.server.WorkerService: void join(long)>(v);
label:
return;
}
public java.lang.Iterable getConnections()
{
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
return v;
}
public void dumpConnections(java.io.PrintWriter)
{
java.io.PrintWriter v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
org.apache.zookeeper.server.ExpiryQueue v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: java.io.PrintWriter;
virtualinvoke v.<java.io.PrintWriter: void print(java.lang.String)>("Connections ");
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: org.apache.zookeeper.server.ExpiryQueue cnxnExpiryQueue>;
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: void dump(java.io.PrintWriter)>(v);
return;
}
public void resetAllConnectionStats()
{
java.util.Iterator v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
java.lang.Object v;
boolean v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
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()>();
virtualinvoke v.<org.apache.zookeeper.server.ServerCnxn: void resetStats()>();
goto label;
label:
return;
}
public java.lang.Iterable getAllConnectionInfo(boolean)
{
java.util.Iterator v;
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.util.Set v;
java.util.HashSet v;
java.util.Map v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.zookeeper.server.NIOServerCnxnFactory;
v := @parameter: boolean;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.apache.zookeeper.server.NIOServerCnxnFactory: java.util.Set cnxns>;
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.<org.apache.zookeeper.server.ServerCnxn: java.util.Map getConnectionInfo(boolean)>(v);
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
java.lang.Thread$UncaughtExceptionHandler v;
org.apache.zookeeper.server.NIOServerCnxnFactory$1 v;
int v;
java.lang.Integer v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/server/NIOServerCnxnFactory;");
<org.apache.zookeeper.server.NIOServerCnxnFactory: org.slf4j.Logger LOG> = v;
v = staticinvoke <org.apache.zookeeper.server.NIOServerCnxnFactory$lambda_static_0__85: java.lang.Thread$UncaughtExceptionHandler bootstrap$()>();
staticinvoke <java.lang.Thread: void setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("zookeeper.nio.directBufferBytes", 65536);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
<org.apache.zookeeper.server.NIOServerCnxnFactory: int directBufferBytes> = v;
v = new org.apache.zookeeper.server.NIOServerCnxnFactory$1;
specialinvoke v.<org.apache.zookeeper.server.NIOServerCnxnFactory$1: void <init>()>();
<org.apache.zookeeper.server.NIOServerCnxnFactory: java.lang.ThreadLocal directBuffer> = v;
return;
}
}