public class org.apache.zookeeper.server.SessionTrackerImpl extends org.apache.zookeeper.server.ZooKeeperCriticalThread implements org.apache.zookeeper.server.SessionTracker
{
private static final org.slf4j.Logger LOG;
protected final java.util.concurrent.ConcurrentHashMap sessionsById;
private final org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue;
protected final java.util.concurrent.ConcurrentMap sessionsWithTimeout;
private final java.util.concurrent.atomic.AtomicLong nextSessionId;
private final org.apache.zookeeper.server.SessionTracker$SessionExpirer expirer;
volatile boolean running;
public static long initializeNextSessionId(long)
{
byte v;
long v, v, v, v, v, v;
v := @parameter: long;
v = staticinvoke <org.apache.zookeeper.common.Time: long currentElapsedTime()>();
v = v << 24;
v = v >>> 8;
v = v << 56;
v = v | v;
v = v cmp -9223372036854775808L;
if v != 0 goto label;
v = v + 1L;
label:
return v;
}
public void <init>(org.apache.zookeeper.server.SessionTracker$SessionExpirer, java.util.concurrent.ConcurrentMap, int, long, org.apache.zookeeper.server.ZooKeeperServerListener)
{
long v, v, v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.util.concurrent.ConcurrentMap v;
int v, v;
org.apache.zookeeper.server.ZooKeeperServerListener v;
boolean v;
java.util.Iterator v;
org.apache.zookeeper.server.ExpiryQueue v;
java.util.concurrent.ConcurrentHashMap v;
java.util.Set v;
org.apache.zookeeper.server.SessionTracker$SessionExpirer v;
java.util.concurrent.atomic.AtomicLong v, v;
java.lang.Object v, v, v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: org.apache.zookeeper.server.SessionTracker$SessionExpirer;
v := @parameter: java.util.concurrent.ConcurrentMap;
v := @parameter: int;
v := @parameter: long;
v := @parameter: org.apache.zookeeper.server.ZooKeeperServerListener;
specialinvoke v.<org.apache.zookeeper.server.ZooKeeperCriticalThread: void <init>(java.lang.String,org.apache.zookeeper.server.ZooKeeperServerListener)>("SessionTracker", v);
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.atomic.AtomicLong nextSessionId> = v;
v.<org.apache.zookeeper.server.SessionTrackerImpl: boolean running> = 1;
v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.SessionTracker$SessionExpirer expirer> = v;
v = new org.apache.zookeeper.server.ExpiryQueue;
specialinvoke v.<org.apache.zookeeper.server.ExpiryQueue: void <init>(int)>(v);
v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue> = v;
v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentMap sessionsWithTimeout> = v;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.atomic.AtomicLong nextSessionId>;
v = staticinvoke <org.apache.zookeeper.server.SessionTrackerImpl: long initializeNextSessionId(long)>(v);
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set entrySet()>();
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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: boolean trackSession(long,int)>(v, v);
goto label;
label:
staticinvoke <org.apache.zookeeper.server.EphemeralType: void validateServerId(long)>(v);
return;
}
public void dumpSessions(java.io.PrintWriter)
{
java.io.PrintWriter v;
org.apache.zookeeper.server.SessionTrackerImpl v;
org.apache.zookeeper.server.ExpiryQueue v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: java.io.PrintWriter;
virtualinvoke v.<java.io.PrintWriter: void print(java.lang.String)>("Session ");
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: void dump(java.io.PrintWriter)>(v);
return;
}
public synchronized java.util.Map getSessionExpiryMap()
{
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.util.HashSet v;
java.lang.Long v;
java.util.Map v;
boolean v, v;
java.util.Iterator v, v;
org.apache.zookeeper.server.ExpiryQueue v;
java.util.Set v;
java.util.TreeMap v;
java.lang.Object v, v, v, v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
v = virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.util.Map getExpiryMap()>();
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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 = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
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 = v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: long sessionId>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public java.lang.String toString()
{
java.io.PrintWriter v;
java.io.StringWriter v;
java.lang.String v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v = new java.io.StringWriter;
specialinvoke v.<java.io.StringWriter: void <init>()>();
v = new java.io.PrintWriter;
specialinvoke v.<java.io.PrintWriter: void <init>(java.io.Writer)>(v);
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void dumpSessions(java.io.PrintWriter)>(v);
virtualinvoke v.<java.io.PrintWriter: void flush()>();
virtualinvoke v.<java.io.PrintWriter: void close()>();
v = virtualinvoke v.<java.io.StringWriter: java.lang.String toString()>();
return v;
}
public void run()
{
org.apache.zookeeper.metrics.Counter v;
long v, v;
org.apache.zookeeper.server.SessionTrackerImpl v;
byte v;
org.apache.zookeeper.server.ServerMetrics v;
java.lang.String v;
boolean v, v;
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.zookeeper.server.ExpiryQueue v, v;
java.util.Set v;
org.apache.zookeeper.server.SessionTracker$SessionExpirer v;
java.lang.InterruptedException v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: boolean running>;
if v == 0 goto label;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
v = virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: long getWaitTime()>();
v = v cmp 0L;
if v <= 0 goto label;
staticinvoke <java.lang.Thread: void sleep(long)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
v = virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.util.Set poll()>();
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 = staticinvoke <org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.server.ServerMetrics getMetrics()>();
v = v.<org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.metrics.Counter STALE_SESSIONS_EXPIRED>;
interfaceinvoke v.<org.apache.zookeeper.metrics.Counter: void add(long)>(1L);
v = v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: long sessionId>;
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void setSessionClosing(long)>(v);
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.SessionTracker$SessionExpirer expirer>;
interfaceinvoke v.<org.apache.zookeeper.server.SessionTracker$SessionExpirer: void expire(org.apache.zookeeper.server.SessionTracker$Session)>(v);
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: java.lang.String getName()>();
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void handleException(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("SessionTrackerImpl exited loop!");
return;
catch java.lang.InterruptedException from label to label with label;
}
public synchronized boolean touchSession(long, int)
{
java.lang.Long v;
int v;
java.util.concurrent.ConcurrentHashMap v;
java.lang.Object v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void logTraceTouchInvalidSession(long,int)>(v, v);
return 0;
label:
v = virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: boolean isClosing()>();
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void logTraceTouchClosingSession(long,int)>(v, v);
return 0;
label:
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void updateSessionExpiry(org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl,int)>(v, v);
return 1;
}
private void updateSessionExpiry(org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl, int)
{
org.apache.zookeeper.server.ExpiryQueue v;
int v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl;
v := @parameter: int;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: long sessionId>;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void logTraceTouchSession(long,int,java.lang.String)>(v, v, "");
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.lang.Long update(java.lang.Object,int)>(v, v);
return;
}
private void logTraceTouchSession(long, int, java.lang.String)
{
java.lang.Object[] v;
org.slf4j.Logger v, v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
int v;
java.lang.String v, v, v, v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
v := @parameter: java.lang.String;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
v[1] = v;
v = staticinvoke <java.lang.Integer: java.lang.String toString(int)>(v);
v[2] = v;
v = staticinvoke <java.text.MessageFormat: java.lang.String format(java.lang.String,java.lang.Object[])>("SessionTrackerImpl --- Touch {0}session: 0x{1} with timeout {2}", v);
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
staticinvoke <org.apache.zookeeper.server.ZooTrace: void logTraceMessage(org.slf4j.Logger,long,java.lang.String)>(v, 8L, v);
label:
return;
}
private void logTraceTouchInvalidSession(long, int)
{
int v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void logTraceTouchSession(long,int,java.lang.String)>(v, v, "invalid ");
return;
}
private void logTraceTouchClosingSession(long, int)
{
int v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void logTraceTouchSession(long,int,java.lang.String)>(v, v, "closing ");
return;
}
public int getSessionTimeout(long)
{
java.lang.Long v;
int v;
java.lang.Object v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentMap sessionsWithTimeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
return v;
}
public synchronized void setSessionClosing(long)
{
org.slf4j.Logger v, v;
java.util.concurrent.ConcurrentHashMap v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.lang.Long v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Session closing: 0x{}", v);
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
return;
label:
v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: boolean isClosing> = 1;
return;
}
public synchronized void removeSession(long)
{
org.slf4j.Logger v, v, v;
org.apache.zookeeper.server.ExpiryQueue v;
java.util.concurrent.ConcurrentHashMap v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.util.concurrent.ConcurrentMap v;
java.lang.Long v, v;
java.lang.Object v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Removing session 0x{}", v);
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object remove(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentMap sessionsWithTimeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
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[])>("SessionTrackerImpl --- Removing session 0x\u0001");
staticinvoke <org.apache.zookeeper.server.ZooTrace: void logTraceMessage(org.slf4j.Logger,long,java.lang.String)>(v, 32L, v);
label:
if v == null goto label;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: org.apache.zookeeper.server.ExpiryQueue sessionExpiryQueue>;
virtualinvoke v.<org.apache.zookeeper.server.ExpiryQueue: java.lang.Long remove(java.lang.Object)>(v);
label:
return;
}
public void shutdown()
{
org.slf4j.Logger v, v, v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Shutting down");
v.<org.apache.zookeeper.server.SessionTrackerImpl: boolean running> = 0;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <org.apache.zookeeper.server.ZooTrace: long getTextTraceLevel()>();
staticinvoke <org.apache.zookeeper.server.ZooTrace: void logTraceMessage(org.slf4j.Logger,long,java.lang.String)>(v, v, "Shutdown SessionTrackerImpl!");
label:
return;
}
public long createSession(int)
{
java.util.concurrent.atomic.AtomicLong v;
int v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: int;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.atomic.AtomicLong nextSessionId>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndIncrement()>();
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: boolean trackSession(long,int)>(v, v);
return v;
}
public synchronized boolean trackSession(long, int)
{
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.lang.Long v, v;
int v;
java.lang.String v, v, v, v;
boolean v, v;
org.slf4j.Logger v, v, v;
java.util.concurrent.ConcurrentHashMap v, v;
org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl v;
java.lang.Object v, v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
v = 0;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl;
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: void <init>(long,int)>(v, v);
v = v;
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
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;
goto label;
label:
v = 1;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Adding session 0x{}", v);
label:
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
if v == 0 goto label;
v = "Adding";
goto label;
label:
v = "Existing";
label:
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,int)>(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[])>("SessionTrackerImpl --- \u session 0x\u \u0001");
staticinvoke <org.apache.zookeeper.server.ZooTrace: void logTraceMessage(org.slf4j.Logger,long,java.lang.String)>(v, 32L, v);
label:
specialinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void updateSessionExpiry(org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl,int)>(v, v);
return v;
}
public synchronized boolean commitSession(long, int)
{
long v;
java.lang.Integer v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.util.concurrent.ConcurrentMap v;
java.lang.Long v;
int v;
java.lang.Object v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: int;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentMap sessionsWithTimeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isTrackingSession(long)
{
java.lang.Long v;
java.util.concurrent.ConcurrentHashMap v;
long v;
org.apache.zookeeper.server.SessionTrackerImpl v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: boolean containsKey(java.lang.Object)>(v);
return v;
}
public synchronized void checkSession(long, java.lang.Object) throws org.apache.zookeeper.KeeperException$SessionExpiredException, org.apache.zookeeper.KeeperException$SessionMovedException, org.apache.zookeeper.KeeperException$UnknownSessionException
{
org.slf4j.Logger v;
java.util.concurrent.ConcurrentHashMap v;
long v;
org.apache.zookeeper.KeeperException$SessionExpiredException v;
org.apache.zookeeper.server.SessionTrackerImpl v;
org.apache.zookeeper.KeeperException$UnknownSessionException v;
java.lang.Long v;
org.apache.zookeeper.KeeperException$SessionMovedException v;
java.lang.Object v, v, v, v;
java.lang.String v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: java.lang.Object;
v = <org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.String toHexString(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Checking session 0x{}", v);
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new org.apache.zookeeper.KeeperException$UnknownSessionException;
specialinvoke v.<org.apache.zookeeper.KeeperException$UnknownSessionException: void <init>()>();
throw v;
label:
v = virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: boolean isClosing()>();
if v == 0 goto label;
v = new org.apache.zookeeper.KeeperException$SessionExpiredException;
specialinvoke v.<org.apache.zookeeper.KeeperException$SessionExpiredException: void <init>()>();
throw v;
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: java.lang.Object owner>;
if v != null goto label;
v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: java.lang.Object owner> = v;
goto label;
label:
v = v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: java.lang.Object owner>;
if v == v goto label;
v = new org.apache.zookeeper.KeeperException$SessionMovedException;
specialinvoke v.<org.apache.zookeeper.KeeperException$SessionMovedException: void <init>()>();
throw v;
label:
return;
}
public synchronized void setOwner(long, java.lang.Object) throws org.apache.zookeeper.KeeperException$SessionExpiredException
{
java.util.concurrent.ConcurrentHashMap v;
long v;
org.apache.zookeeper.KeeperException$SessionExpiredException v;
org.apache.zookeeper.server.SessionTrackerImpl v;
java.lang.Long v;
java.lang.Object v, v;
boolean v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: java.lang.Object;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: boolean isClosing()>();
if v == 0 goto label;
label:
v = new org.apache.zookeeper.KeeperException$SessionExpiredException;
specialinvoke v.<org.apache.zookeeper.KeeperException$SessionExpiredException: void <init>()>();
throw v;
label:
v.<org.apache.zookeeper.server.SessionTrackerImpl$SessionImpl: java.lang.Object owner> = v;
return;
}
public void checkGlobalSession(long, java.lang.Object) throws org.apache.zookeeper.KeeperException$SessionExpiredException, org.apache.zookeeper.KeeperException$SessionMovedException
{
org.apache.zookeeper.KeeperException$UnknownSessionException v;
java.lang.Object v;
long v;
org.apache.zookeeper.KeeperException$SessionExpiredException v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v := @parameter: long;
v := @parameter: java.lang.Object;
label:
virtualinvoke v.<org.apache.zookeeper.server.SessionTrackerImpl: void checkSession(long,java.lang.Object)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.zookeeper.KeeperException$SessionExpiredException;
specialinvoke v.<org.apache.zookeeper.KeeperException$SessionExpiredException: void <init>()>();
throw v;
label:
return;
catch org.apache.zookeeper.KeeperException$UnknownSessionException from label to label with label;
}
public long getLocalSessionCount()
{
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
return 0L;
}
public boolean isLocalSessionsEnabled()
{
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
return 0;
}
public java.util.Set globalSessions()
{
java.util.concurrent.ConcurrentHashMap v;
java.util.concurrent.ConcurrentHashMap$KeySetView v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v = v.<org.apache.zookeeper.server.SessionTrackerImpl: java.util.concurrent.ConcurrentHashMap sessionsById>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentHashMap: java.util.concurrent.ConcurrentHashMap$KeySetView keySet()>();
return v;
}
public java.util.Set localSessions()
{
java.util.Set v;
org.apache.zookeeper.server.SessionTrackerImpl v;
v := @this: org.apache.zookeeper.server.SessionTrackerImpl;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/server/SessionTrackerImpl;");
<org.apache.zookeeper.server.SessionTrackerImpl: org.slf4j.Logger LOG> = v;
return;
}
}