public class org.apache.qpid.proton.reactor.impl.Timer extends java.lang.Object
{
private org.apache.qpid.proton.engine.impl.CollectorImpl collector;
private java.util.PriorityQueue tasks;
private java.util.concurrent.atomic.AtomicInteger counter;
public void <init>(org.apache.qpid.proton.engine.Collector)
{
org.apache.qpid.proton.engine.Collector v;
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.concurrent.atomic.AtomicInteger v;
java.util.PriorityQueue v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
v := @parameter: org.apache.qpid.proton.engine.Collector;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.PriorityQueue;
specialinvoke v.<java.util.PriorityQueue: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.concurrent.atomic.AtomicInteger counter> = v;
v.<org.apache.qpid.proton.reactor.impl.Timer: org.apache.qpid.proton.engine.impl.CollectorImpl collector> = v;
return;
}
org.apache.qpid.proton.reactor.Task schedule(long)
{
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.concurrent.atomic.AtomicInteger v;
java.util.PriorityQueue v;
int v;
org.apache.qpid.proton.reactor.impl.TaskImpl v;
long v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
v := @parameter: long;
v = new org.apache.qpid.proton.reactor.impl.TaskImpl;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.concurrent.atomic.AtomicInteger counter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
specialinvoke v.<org.apache.qpid.proton.reactor.impl.TaskImpl: void <init>(long,int)>(v, v);
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
virtualinvoke v.<java.util.PriorityQueue: boolean add(java.lang.Object)>(v);
return v;
}
long deadline()
{
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.PriorityQueue v, v;
int v;
java.lang.Object v;
long v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
specialinvoke v.<org.apache.qpid.proton.reactor.impl.Timer: void flushCancelled()>();
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: int size()>();
if v <= 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: java.lang.Object peek()>();
v = interfaceinvoke v.<org.apache.qpid.proton.reactor.Task: long deadline()>();
return v;
label:
return 0L;
}
private void flushCancelled()
{
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.PriorityQueue v, v, v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
label:
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: java.lang.Object peek()>();
v = virtualinvoke v.<org.apache.qpid.proton.reactor.impl.TaskImpl: boolean isCancelled()>();
if v == 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
virtualinvoke v.<java.util.PriorityQueue: java.lang.Object poll()>();
goto label;
label:
return;
}
void tick(long)
{
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.PriorityQueue v, v, v;
long v, v;
org.apache.qpid.proton.engine.impl.CollectorImpl v;
org.apache.qpid.proton.engine.Event$Type v;
byte v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
v := @parameter: long;
label:
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: java.lang.Object peek()>();
v = virtualinvoke v.<org.apache.qpid.proton.reactor.impl.TaskImpl: long deadline()>();
v = v cmp v;
if v < 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
virtualinvoke v.<java.util.PriorityQueue: java.lang.Object poll()>();
v = virtualinvoke v.<org.apache.qpid.proton.reactor.impl.TaskImpl: boolean isCancelled()>();
if v != 0 goto label;
v = v.<org.apache.qpid.proton.reactor.impl.Timer: org.apache.qpid.proton.engine.impl.CollectorImpl collector>;
v = <org.apache.qpid.proton.engine.Event$Type: org.apache.qpid.proton.engine.Event$Type TIMER_TASK>;
virtualinvoke v.<org.apache.qpid.proton.engine.impl.CollectorImpl: org.apache.qpid.proton.engine.impl.EventImpl put(org.apache.qpid.proton.engine.EventType,java.lang.Object)>(v, v);
goto label;
label:
return;
}
int tasks()
{
int v;
org.apache.qpid.proton.reactor.impl.Timer v;
java.util.PriorityQueue v;
v := @this: org.apache.qpid.proton.reactor.impl.Timer;
specialinvoke v.<org.apache.qpid.proton.reactor.impl.Timer: void flushCancelled()>();
v = v.<org.apache.qpid.proton.reactor.impl.Timer: java.util.PriorityQueue tasks>;
v = virtualinvoke v.<java.util.PriorityQueue: int size()>();
return v;
}
}