public class org.apache.zookeeper.ClientCnxnSocketNIO extends org.apache.zookeeper.ClientCnxnSocket
{
private static final org.slf4j.Logger LOG;
private final java.nio.channels.Selector selector;
private java.nio.channels.SelectionKey sockKey;
private java.net.SocketAddress localSocketAddress;
private java.net.SocketAddress remoteSocketAddress;
void <init>(org.apache.zookeeper.client.ZKClientConfig) throws java.io.IOException
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
org.apache.zookeeper.client.ZKClientConfig v;
java.nio.channels.Selector v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: org.apache.zookeeper.client.ZKClientConfig;
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocket: void <init>()>();
v = staticinvoke <java.nio.channels.Selector: java.nio.channels.Selector open()>();
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector> = v;
v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.client.ZKClientConfig clientConfig> = v;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void initProperties()>();
return;
}
boolean isConnected()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.nio.channels.SelectionKey v;
boolean v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
void doIO(java.util.Queue, org.apache.zookeeper.ClientCnxn) throws java.lang.InterruptedException, java.io.IOException
{
java.nio.ByteBuffer v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.zookeeper.ClientCnxn$SendThread v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
boolean v, v, v, v, v, v, v, v, v, v;
org.apache.zookeeper.proto.RequestHeader v, v, v, v, v, v, v;
java.util.Queue v;
java.lang.Throwable v;
org.apache.zookeeper.ClientCnxn v;
long v;
org.apache.zookeeper.ClientCnxn$EndOfStreamException v;
org.apache.zookeeper.ClientCnxn$Packet v, v;
int v, v, v, v, v, v;
java.lang.String v, v;
java.nio.channels.SelectionKey v, v, v;
java.io.IOException v;
java.util.concurrent.atomic.AtomicLong v, v;
java.nio.channels.SelectableChannel v;
java.util.concurrent.LinkedBlockingDeque v, v, v, v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: java.util.Queue;
v := @parameter: org.apache.zookeeper.ClientCnxn;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
if v != null goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Socket is null!");
throw v;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isReadable()>();
if v == 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer>;
v = virtualinvoke v.<java.nio.channels.SocketChannel: int read(java.nio.ByteBuffer)>(v);
if v >= 0 goto label;
v = new org.apache.zookeeper.ClientCnxn$EndOfStreamException;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: long sessionId>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Unable to read additional data from server sessionid 0x\u, likely server has closed socket");
specialinvoke v.<org.apache.zookeeper.ClientCnxn$EndOfStreamException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer>;
v = virtualinvoke v.<java.nio.ByteBuffer: boolean hasRemaining()>();
if v != 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer>;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer flip()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer>;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
if v != v goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.atomic.AtomicLong recvCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndIncrement()>();
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void readLength()>();
goto label;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: boolean initialized>;
if v != 0 goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void readConnectResult()>();
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void enableRead()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.LinkedBlockingDeque outgoingQueue>;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: boolean tunnelAuthInProgress()>();
v = specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$Packet findSendablePacket(java.util.concurrent.LinkedBlockingDeque,boolean)>(v, v);
if v == null goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void enableWrite()>();
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer clear()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer> = v;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateLastHeard()>();
v.<org.apache.zookeeper.ClientCnxnSocketNIO: boolean initialized> = 1;
goto label;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer>;
virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: void readResponse(java.nio.ByteBuffer)>(v);
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer clear()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer> = v;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateLastHeard()>();
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isWritable()>();
if v == 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.LinkedBlockingDeque outgoingQueue>;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: boolean tunnelAuthInProgress()>();
v = specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$Packet findSendablePacket(java.util.concurrent.LinkedBlockingDeque,boolean)>(v, v);
if v == null goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateLastSend()>();
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
if v != null goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
if v == null goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
v = virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: int getType()>();
if v == 11 goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
v = virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: int getType()>();
if v == 100 goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxn: int getXid()>();
virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: void setXid(int)>(v);
label:
virtualinvoke v.<org.apache.zookeeper.ClientCnxn$Packet: void createBB()>();
label:
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
virtualinvoke v.<java.nio.channels.SocketChannel: int write(java.nio.ByteBuffer)>(v);
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
v = virtualinvoke v.<java.nio.ByteBuffer: boolean hasRemaining()>();
if v != 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.atomic.AtomicLong sentCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndIncrement()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.LinkedBlockingDeque outgoingQueue>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: boolean removeFirstOccurrence(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
if v == null goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
v = virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: int getType()>();
if v == 11 goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
v = virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: int getType()>();
if v == 100 goto label;
entermonitor v;
label:
interfaceinvoke v.<java.util.Queue: boolean add(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.LinkedBlockingDeque outgoingQueue>;
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: boolean isEmpty()>();
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void disableWrite()>();
goto label;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: boolean initialized>;
if v != 0 goto label;
if v == null goto label;
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
v = virtualinvoke v.<java.nio.ByteBuffer: boolean hasRemaining()>();
if v != 0 goto label;
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void disableWrite()>();
goto label;
label:
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void enableWrite()>();
label:
return;
catch java.lang.Throwable from label to label with label;
}
private org.apache.zookeeper.ClientCnxn$Packet findSendablePacket(java.util.concurrent.LinkedBlockingDeque, boolean)
{
org.slf4j.Logger v;
java.util.Iterator v;
java.nio.ByteBuffer v;
org.apache.zookeeper.proto.RequestHeader v;
java.util.concurrent.LinkedBlockingDeque v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.lang.Object v, v, v;
boolean v, v, v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: java.util.concurrent.LinkedBlockingDeque;
v := @parameter: boolean;
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: boolean isEmpty()>();
if v == 0 goto label;
return null;
label:
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: java.lang.Object getFirst()>();
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
if v != null goto label;
if v != 0 goto label;
label:
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: java.lang.Object getFirst()>();
return v;
label:
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: 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 = v.<org.apache.zookeeper.ClientCnxn$Packet: org.apache.zookeeper.proto.RequestHeader requestHeader>;
if v != null goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
virtualinvoke v.<java.util.concurrent.LinkedBlockingDeque: void addFirst(java.lang.Object)>(v);
return v;
label:
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Deferring non-priming packet {} until SASL authentication completes.", v);
goto label;
label:
return null;
}
void cleanup()
{
java.net.Socket v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
org.slf4j.Logger v, v, v, v;
java.nio.channels.SelectionKey v, v, v;
java.io.IOException v, v, v;
java.lang.InterruptedException v;
java.nio.channels.SelectableChannel v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
if v == null goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
virtualinvoke v.<java.nio.channels.SelectionKey: void cancel()>();
label:
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
virtualinvoke v.<java.net.Socket: void shutdownInput()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Ignoring exception during shutdown input", v);
label:
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
virtualinvoke v.<java.net.Socket: void shutdownOutput()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Ignoring exception during shutdown output", v);
label:
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
virtualinvoke v.<java.net.Socket: void close()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Ignoring exception during socket close", v);
label:
staticinvoke <java.lang.Thread: void sleep(long)>(100L);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("SendThread interrupted during sleep, ignoring");
label:
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey> = null;
return;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
void close()
{
org.slf4j.Logger v, v, v, v, v;
java.nio.channels.Selector v;
java.io.IOException v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
boolean v, v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
label:
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Doing client selector close");
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: void close()>();
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Closed client selector");
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Ignoring exception during selector close", v);
label:
return;
catch java.io.IOException from label to label with label;
}
java.nio.channels.SocketChannel createSock() throws java.io.IOException
{
java.net.Socket v, v;
java.nio.channels.SocketChannel v;
int v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = staticinvoke <java.nio.channels.SocketChannel: java.nio.channels.SocketChannel open()>();
virtualinvoke v.<java.nio.channels.SocketChannel: java.nio.channels.SelectableChannel configureBlocking(boolean)>(0);
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
v = (int) -1;
virtualinvoke v.<java.net.Socket: void setSoLinger(boolean,int)>(0, v);
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
virtualinvoke v.<java.net.Socket: void setTcpNoDelay(boolean)>(1);
return v;
}
void registerAndConnect(java.nio.channels.SocketChannel, java.net.InetSocketAddress) throws java.io.IOException
{
org.apache.zookeeper.ClientCnxn$SendThread v;
java.nio.channels.SocketChannel v;
java.nio.channels.SelectionKey v;
java.nio.channels.Selector v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.net.InetSocketAddress v;
boolean v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: java.nio.channels.SocketChannel;
v := @parameter: java.net.InetSocketAddress;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.nio.channels.SelectionKey register(java.nio.channels.Selector,int)>(v, 8);
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey> = v;
v = virtualinvoke v.<java.nio.channels.SocketChannel: boolean connect(java.net.SocketAddress)>(v);
if v == 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: void primeConnection()>();
label:
return;
}
void connect(java.net.InetSocketAddress) throws java.io.IOException
{
org.slf4j.Logger v;
java.nio.channels.SocketChannel v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.net.InetSocketAddress v;
java.lang.Exception v;
java.nio.ByteBuffer v, v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: java.net.InetSocketAddress;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SocketChannel createSock()>();
label:
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void registerAndConnect(java.nio.channels.SocketChannel,java.net.InetSocketAddress)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object)>("Unable to open socket to {}", v);
virtualinvoke v.<java.nio.channels.SocketChannel: void close()>();
throw v;
label:
v.<org.apache.zookeeper.ClientCnxnSocketNIO: boolean initialized> = 0;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer clear()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer lenBuffer>;
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.ByteBuffer incomingBuffer> = v;
return;
catch java.nio.channels.UnresolvedAddressException from label to label with label;
catch java.nio.channels.UnsupportedAddressTypeException from label to label with label;
catch java.lang.SecurityException from label to label with label;
catch java.io.IOException from label to label with label;
}
java.net.SocketAddress getRemoteSocketAddress()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.net.SocketAddress v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.net.SocketAddress remoteSocketAddress>;
return v;
}
java.net.SocketAddress getLocalSocketAddress()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.net.SocketAddress v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.net.SocketAddress localSocketAddress>;
return v;
}
private void updateSocketAddresses()
{
java.net.Socket v;
java.net.SocketAddress v, v;
java.nio.channels.SelectableChannel v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
v = virtualinvoke v.<java.net.Socket: java.net.SocketAddress getLocalSocketAddress()>();
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.net.SocketAddress localSocketAddress> = v;
v = virtualinvoke v.<java.net.Socket: java.net.SocketAddress getRemoteSocketAddress()>();
v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.net.SocketAddress remoteSocketAddress> = v;
return;
}
void packetAdded()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void wakeupCnxn()>();
return;
}
void onClosing()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void wakeupCnxn()>();
return;
}
private synchronized void wakeupCnxn()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.nio.channels.Selector v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: java.nio.channels.Selector wakeup()>();
return;
}
void doTransport(int, java.util.Queue, org.apache.zookeeper.ClientCnxn) throws java.io.IOException, java.lang.InterruptedException
{
java.lang.Throwable v;
java.nio.channels.Selector v, v;
org.apache.zookeeper.ZooKeeper$States v;
org.apache.zookeeper.ClientCnxn v;
org.apache.zookeeper.ClientCnxn$Packet v;
org.apache.zookeeper.ClientCnxn$SendThread v, v, v;
int v, v, v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
boolean v, v, v, v;
java.util.Iterator v;
java.util.Set v;
java.nio.channels.SelectableChannel v;
java.util.concurrent.LinkedBlockingDeque v;
java.lang.Object v;
java.util.Queue v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: int;
v := @parameter: java.util.Queue;
v := @parameter: org.apache.zookeeper.ClientCnxn;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: int select(long)>(v);
entermonitor v;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateNow()>();
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.nio.channels.SelectableChannel channel()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: int readyOps()>();
v = v & 8;
if v == 0 goto label;
v = virtualinvoke v.<java.nio.channels.SocketChannel: boolean finishConnect()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateLastSendAndHeard()>();
specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void updateSocketAddresses()>();
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: void primeConnection()>();
goto label;
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: int readyOps()>();
v = v & 5;
if v == 0 goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void doIO(java.util.Queue,org.apache.zookeeper.ClientCnxn)>(v, v);
goto label;
label:
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: org.apache.zookeeper.ZooKeeper$States getZkState()>();
v = virtualinvoke v.<org.apache.zookeeper.ZooKeeper$States: boolean isConnected()>();
if v == 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.util.concurrent.LinkedBlockingDeque outgoingQueue>;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$SendThread sendThread>;
v = virtualinvoke v.<org.apache.zookeeper.ClientCnxn$SendThread: boolean tunnelAuthInProgress()>();
v = specialinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: org.apache.zookeeper.ClientCnxn$Packet findSendablePacket(java.util.concurrent.LinkedBlockingDeque,boolean)>(v, v);
if v == null goto label;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void enableWrite()>();
label:
interfaceinvoke v.<java.util.Set: void clear()>();
return;
catch java.lang.Throwable from label to label with label;
}
void testableCloseSocket() throws java.io.IOException
{
java.net.Socket v;
org.slf4j.Logger v;
java.nio.channels.SelectableChannel v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = <org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("testableCloseSocket() called");
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
if v == null goto label;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
virtualinvoke v.<java.net.Socket: void close()>();
label:
return;
}
void saslCompleted()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
virtualinvoke v.<org.apache.zookeeper.ClientCnxnSocketNIO: void enableWrite()>();
return;
}
synchronized void enableWrite()
{
java.nio.channels.SelectionKey v, v;
int v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = v & 4;
if v != 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = v | 4;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
private synchronized void disableWrite()
{
java.nio.channels.SelectionKey v, v;
int v, v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = v & 4;
if v == 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = (int) -5;
v = v & v;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
private synchronized void enableRead()
{
java.nio.channels.SelectionKey v, v;
int v, v, v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = v & 1;
if v != 0 goto label;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = v | 1;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
void connectionPrimed()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.nio.channels.SelectionKey v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(5);
return;
}
java.nio.channels.Selector getSelector()
{
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.nio.channels.Selector v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.Selector selector>;
return v;
}
void sendPacket(org.apache.zookeeper.ClientCnxn$Packet) throws java.io.IOException
{
org.apache.zookeeper.ClientCnxn$Packet v;
java.nio.channels.SelectableChannel v;
java.nio.channels.SelectionKey v;
org.apache.zookeeper.ClientCnxnSocketNIO v;
java.io.IOException v;
java.nio.ByteBuffer v;
v := @this: org.apache.zookeeper.ClientCnxnSocketNIO;
v := @parameter: org.apache.zookeeper.ClientCnxn$Packet;
v = v.<org.apache.zookeeper.ClientCnxnSocketNIO: java.nio.channels.SelectionKey sockKey>;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
if v != null goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Socket is null!");
throw v;
label:
virtualinvoke v.<org.apache.zookeeper.ClientCnxn$Packet: void createBB()>();
v = v.<org.apache.zookeeper.ClientCnxn$Packet: java.nio.ByteBuffer bb>;
virtualinvoke v.<java.nio.channels.SocketChannel: int write(java.nio.ByteBuffer)>(v);
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/ClientCnxnSocketNIO;");
<org.apache.zookeeper.ClientCnxnSocketNIO: org.slf4j.Logger LOG> = v;
return;
}
}