class org.apache.qpid.proton.reactor.impl.SelectorImpl extends java.lang.Object implements org.apache.qpid.proton.reactor.Selector
{
private final java.nio.channels.Selector selector;
private final java.util.HashSet selectables;
private final java.util.HashSet readable;
private final java.util.HashSet writeable;
private final java.util.HashSet expired;
private final java.util.HashSet error;
protected void <init>(org.apache.qpid.proton.reactor.impl.IO) throws java.io.IOException
{
java.nio.channels.Selector v;
java.util.HashSet v, v, v, v, v;
org.apache.qpid.proton.reactor.impl.IO v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v := @parameter: org.apache.qpid.proton.reactor.impl.IO;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet selectables> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet readable> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet writeable> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet expired> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet error> = v;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.impl.IO: java.nio.channels.Selector selector()>();
v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector> = v;
return;
}
public void add(org.apache.qpid.proton.reactor.Selectable) throws java.io.IOException
{
java.nio.channels.SelectionKey v;
java.nio.channels.Selector v;
java.util.HashSet v;
java.nio.channels.SelectableChannel v, v, v;
org.apache.qpid.proton.reactor.Selectable v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v := @parameter: org.apache.qpid.proton.reactor.Selectable;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
virtualinvoke v.<java.nio.channels.SelectableChannel: java.nio.channels.SelectableChannel configureBlocking(boolean)>(0);
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.SelectableChannel: java.nio.channels.SelectionKey register(java.nio.channels.Selector,int)>(v, 0);
virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attach(java.lang.Object)>(v);
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet selectables>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
virtualinvoke v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: void update(org.apache.qpid.proton.reactor.Selectable)>(v);
return;
}
public void update(org.apache.qpid.proton.reactor.Selectable)
{
java.nio.channels.SelectionKey v;
java.nio.channels.Selector v;
byte v;
java.nio.channels.SelectableChannel v, v, v, v, v;
org.apache.qpid.proton.reactor.Selectable v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
boolean v, v, v, v, v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v := @parameter: org.apache.qpid.proton.reactor.Selectable;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
if v == null goto label;
v = 0;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = v instanceof java.nio.channels.SocketChannel;
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = virtualinvoke v.<java.nio.channels.SocketChannel: boolean isConnectionPending()>();
if v == 0 goto label;
v = 8;
goto label;
label:
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: boolean isReading()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = v instanceof java.nio.channels.ServerSocketChannel;
if v == 0 goto label;
v = 16;
goto label;
label:
v = 1;
label:
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: boolean isWriting()>();
if v == 0 goto label;
v = v | 4;
label:
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.SelectableChannel: java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector)>(v);
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
public void remove(org.apache.qpid.proton.reactor.Selectable)
{
java.util.HashSet v;
java.nio.channels.SelectableChannel v, v;
java.nio.channels.SelectionKey v;
java.nio.channels.Selector v;
org.apache.qpid.proton.reactor.Selectable v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v := @parameter: org.apache.qpid.proton.reactor.Selectable;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: java.nio.channels.SelectableChannel getChannel()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.SelectableChannel: java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector)>(v);
if v == null goto label;
virtualinvoke v.<java.nio.channels.SelectionKey: void cancel()>();
virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attach(java.lang.Object)>(null);
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet selectables>;
virtualinvoke v.<java.util.HashSet: boolean remove(java.lang.Object)>(v);
return;
}
public void select(long) throws java.io.IOException
{
byte v, v, v, v, v, v, v, v, v, v;
java.util.Set v, v, v, v;
java.nio.channels.Selector v, v, v, v, v, v;
long v, v, v, v, v, v, v, v, v, v;
org.apache.qpid.proton.amqp.Symbol v;
java.lang.String v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
java.io.IOException v;
boolean v, v, v, v, v, v, v, v, v;
org.apache.qpid.proton.engine.Transport v;
org.apache.qpid.proton.amqp.transport.ErrorCondition v;
java.util.HashSet v, v, v, v, v, v, v, v, v, v, v;
int v, v;
java.util.Iterator v, v, v, v;
java.nio.channels.SelectableChannel v;
java.lang.Object v, v, v, v, v, v, v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v := @parameter: long;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v cmp 0L;
if v <= 0 goto label;
v = 0L;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet selectables>;
v = virtualinvoke v.<java.util.HashSet: 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 = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: long getDeadline()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v cmp 0L;
if v != 0 goto label;
v = v;
goto label;
label:
v = staticinvoke <java.lang.Math: long min(long,long)>(v, v);
label:
v = v;
goto label;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = v - v;
v = v cmp 0L;
if v >= 0 goto label;
v = 0L;
goto label;
label:
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet error>;
virtualinvoke v.<java.util.HashSet: void clear()>();
v = 0L;
v = v cmp 0L;
if v <= 0 goto label;
v = v;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: int select(long)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
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: boolean isConnectable()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectableChannel channel()>();
virtualinvoke v.<java.nio.channels.SocketChannel: boolean finishConnect()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attachment()>();
virtualinvoke v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: void update(org.apache.qpid.proton.reactor.Selectable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attachment()>();
v = new org.apache.qpid.proton.amqp.transport.ErrorCondition;
specialinvoke v.<org.apache.qpid.proton.amqp.transport.ErrorCondition: void <init>()>();
v = staticinvoke <org.apache.qpid.proton.amqp.Symbol: org.apache.qpid.proton.amqp.Symbol getSymbol(java.lang.String)>("proton:io");
virtualinvoke v.<org.apache.qpid.proton.amqp.transport.ErrorCondition: void setCondition(org.apache.qpid.proton.amqp.Symbol)>(v);
v = virtualinvoke v.<java.io.IOException: java.lang.String getMessage()>();
virtualinvoke v.<org.apache.qpid.proton.amqp.transport.ErrorCondition: void setDescription(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.qpid.proton.reactor.impl.SelectableImpl: org.apache.qpid.proton.engine.Transport getTransport()>();
if v == null goto label;
interfaceinvoke v.<org.apache.qpid.proton.engine.Transport: void setCondition(org.apache.qpid.proton.amqp.transport.ErrorCondition)>(v);
interfaceinvoke v.<org.apache.qpid.proton.engine.Transport: void close_tail()>();
interfaceinvoke v.<org.apache.qpid.proton.engine.Transport: void close_head()>();
v = interfaceinvoke v.<org.apache.qpid.proton.engine.Transport: int pending()>();
v = staticinvoke <java.lang.Math: int max(int,int)>(0, v);
interfaceinvoke v.<org.apache.qpid.proton.engine.Transport: void pop(int)>(v);
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet error>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
label:
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
v = v - v;
v = v - v;
goto label;
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: int selectNow()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet readable>;
virtualinvoke v.<java.util.HashSet: void clear()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet writeable>;
virtualinvoke v.<java.util.HashSet: void clear()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet expired>;
virtualinvoke v.<java.util.HashSet: void clear()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
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.<java.nio.channels.SelectionKey: boolean isReadable()>();
if v == 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet readable>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isAcceptable()>();
if v == 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet readable>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isWritable()>();
if v == 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet writeable>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
v = virtualinvoke v.<java.nio.channels.Selector: java.util.Set selectedKeys()>();
interfaceinvoke v.<java.util.Set: void clear()>();
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet selectables>;
v = virtualinvoke v.<java.util.HashSet: 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 = interfaceinvoke v.<org.apache.qpid.proton.reactor.Selectable: long getDeadline()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v cmp v;
if v < 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet expired>;
virtualinvoke v.<java.util.HashSet: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
catch java.io.IOException from label to label with label;
}
public java.util.Iterator readable()
{
java.util.HashSet v;
java.util.Iterator v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet readable>;
v = virtualinvoke v.<java.util.HashSet: java.util.Iterator iterator()>();
return v;
}
public java.util.Iterator writeable()
{
java.util.HashSet v;
java.util.Iterator v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet writeable>;
v = virtualinvoke v.<java.util.HashSet: java.util.Iterator iterator()>();
return v;
}
public java.util.Iterator expired()
{
java.util.HashSet v;
java.util.Iterator v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet expired>;
v = virtualinvoke v.<java.util.HashSet: java.util.Iterator iterator()>();
return v;
}
public java.util.Iterator error()
{
java.util.HashSet v;
java.util.Iterator v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.util.HashSet error>;
v = virtualinvoke v.<java.util.HashSet: java.util.Iterator iterator()>();
return v;
}
public void free()
{
java.io.IOException v;
org.apache.qpid.proton.reactor.impl.SelectorImpl v;
java.nio.channels.Selector v;
v := @this: org.apache.qpid.proton.reactor.impl.SelectorImpl;
label:
v = v.<org.apache.qpid.proton.reactor.impl.SelectorImpl: java.nio.channels.Selector selector>;
virtualinvoke v.<java.nio.channels.Selector: void close()>();
label:
goto label;
label:
v := @caughtexception;
label:
return;
catch java.io.IOException from label to label with label;
}
}