public class org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread extends java.lang.Object implements java.lang.Runnable
{
private long timeToLiveMillis;
private long expirationIntervalMillis;
private volatile boolean running;
private final java.lang.Thread expirerThread;
final org.apache.dubbo.cache.support.expiring.ExpiringMap this$0;
public java.lang.String toString()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
java.lang.Thread v;
long v, v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis>;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long expirationIntervalMillis>;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: java.lang.Thread expirerThread>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,long,boolean,java.lang.Thread)>(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[])>("ExpireThread{, timeToLiveMillis=\u, expirationIntervalMillis=\u, running=\u, expirerThread=\u0001}");
return v;
}
public void <init>(org.apache.dubbo.cache.support.expiring.ExpiringMap)
{
org.apache.dubbo.cache.support.expiring.ExpiringMap v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.Thread v, v;
int v;
java.lang.String v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v := @parameter: org.apache.dubbo.cache.support.expiring.ExpiringMap;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: org.apache.dubbo.cache.support.expiring.ExpiringMap this$0> = v;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running> = 0;
v = new java.lang.Thread;
v = <org.apache.dubbo.cache.support.expiring.ExpiringMap: java.util.concurrent.atomic.AtomicInteger expireCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndIncrement()>();
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[])>("ExpiryMapExpire-\u0001");
specialinvoke v.<java.lang.Thread: void <init>(java.lang.Runnable,java.lang.String)>(v, v);
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: java.lang.Thread expirerThread> = v;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: java.lang.Thread expirerThread>;
virtualinvoke v.<java.lang.Thread: void setDaemon(boolean)>(1);
return;
}
public void run()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
java.lang.InterruptedException v;
long v;
boolean v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
label:
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
if v == 0 goto label;
specialinvoke v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: void processExpires()>();
label:
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long expirationIntervalMillis>;
staticinvoke <java.lang.Thread: void sleep(long)>(v);
label:
goto label;
label:
v := @caughtexception;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running> = 0;
goto label;
label:
return;
catch java.lang.InterruptedException from label to label with label;
}
private void processExpires()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap v, v;
long v, v, v, v, v;
byte v, v;
boolean v;
java.util.Iterator v;
java.util.Collection v;
java.util.concurrent.ConcurrentHashMap v, v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
java.lang.Object v, v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis>;
v = v cmp 0L;
if v > 0 goto label;
return;
label:
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: org.apache.dubbo.cache.support.expiring.ExpiringMap this$0>;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap: java.util.concurrent.ConcurrentHashMap delegateMap>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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.dubbo.cache.support.expiring.ExpiringMap$ExpiryObject: long getLastAccessTime()>();
v = v - v;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis>;
v = v cmp v;
if v < 0 goto label;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: org.apache.dubbo.cache.support.expiring.ExpiringMap this$0>;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap: java.util.concurrent.ConcurrentHashMap delegateMap>;
v = virtualinvoke v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpiryObject: java.lang.Object getKey()>();
virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object remove(java.lang.Object)>(v);
goto label;
label:
return;
}
public void startExpiring()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
boolean v;
java.lang.Thread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
if v != 0 goto label;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running> = 1;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: java.lang.Thread expirerThread>;
virtualinvoke v.<java.lang.Thread: void start()>();
label:
return;
}
public void startExpiryIfNotStarted()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
byte v;
long v;
boolean v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
if v == 0 goto label;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis>;
v = v cmp 0L;
if v > 0 goto label;
return;
label:
virtualinvoke v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: void startExpiring()>();
return;
}
public void stopExpiring()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
boolean v;
java.lang.Thread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
if v == 0 goto label;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running> = 0;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: java.lang.Thread expirerThread>;
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return;
}
public boolean isRunning()
{
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
boolean v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: boolean running>;
return v;
}
public int getTimeToLive()
{
int v;
long v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis>;
v = v / 1000;
return v;
}
public void setTimeToLive(long)
{
long v, v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v := @parameter: long;
v = v * 1000L;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long timeToLiveMillis> = v;
return;
}
public int getExpirationInterval()
{
int v;
long v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v = v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long expirationIntervalMillis>;
v = v / 1000;
return v;
}
public void setExpirationInterval(long)
{
long v, v;
org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread v;
v := @this: org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread;
v := @parameter: long;
v = v * 1000L;
v.<org.apache.dubbo.cache.support.expiring.ExpiringMap$ExpireThread: long expirationIntervalMillis> = v;
return;
}
}