public class oadd.org.apache.curator.SessionFailRetryLoop extends java.lang.Object implements java.io.Closeable
{
private final oadd.org.apache.curator.CuratorZookeeperClient client;
private final oadd.org.apache.curator.SessionFailRetryLoop$Mode mode;
private final java.lang.Thread ourThread;
private final java.util.concurrent.atomic.AtomicBoolean sessionHasFailed;
private final java.util.concurrent.atomic.AtomicBoolean isDone;
private final oadd.org.apache.curator.RetryLoop retryLoop;
private final oadd.org.apache.zookeeper.Watcher watcher;
private static final java.util.Set failedSessionThreads;
public static java.lang.Object callWithRetry(oadd.org.apache.curator.CuratorZookeeperClient, oadd.org.apache.curator.SessionFailRetryLoop$Mode, java.util.concurrent.Callable) throws java.lang.Exception
{
java.lang.Throwable v;
java.util.concurrent.Callable v;
oadd.org.apache.curator.CuratorZookeeperClient v;
java.lang.Exception v;
oadd.org.apache.curator.SessionFailRetryLoop$Mode v;
java.lang.Object v;
oadd.org.apache.curator.SessionFailRetryLoop v;
boolean v;
v := @parameter: oadd.org.apache.curator.CuratorZookeeperClient;
v := @parameter: oadd.org.apache.curator.SessionFailRetryLoop$Mode;
v := @parameter: java.util.concurrent.Callable;
v = null;
v = virtualinvoke v.<oadd.org.apache.curator.CuratorZookeeperClient: oadd.org.apache.curator.SessionFailRetryLoop newSessionFailRetryLoop(oadd.org.apache.curator.SessionFailRetryLoop$Mode)>(v);
virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop: void start()>();
label:
v = virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop: boolean shouldContinue()>();
if v == 0 goto label;
label:
v = interfaceinvoke v.<java.util.concurrent.Callable: java.lang.Object call()>();
label:
goto label;
label:
v := @caughtexception;
staticinvoke <oadd.org.apache.curator.utils.ThreadUtils: boolean checkInterrupted(java.lang.Throwable)>(v);
virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop: void takeException(java.lang.Exception)>(v);
goto label;
label:
virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop: void close()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop: void close()>();
throw v;
label:
return v;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
void <init>(oadd.org.apache.curator.CuratorZookeeperClient, oadd.org.apache.curator.SessionFailRetryLoop$Mode)
{
java.util.concurrent.atomic.AtomicBoolean v, v;
oadd.org.apache.curator.CuratorZookeeperClient v;
oadd.org.apache.curator.RetryLoop v;
java.lang.Thread v;
oadd.org.apache.curator.SessionFailRetryLoop$Mode v;
oadd.org.apache.curator.SessionFailRetryLoop v;
oadd.org.apache.curator.SessionFailRetryLoop$1 v;
v := @this: oadd.org.apache.curator.SessionFailRetryLoop;
v := @parameter: oadd.org.apache.curator.CuratorZookeeperClient;
v := @parameter: oadd.org.apache.curator.SessionFailRetryLoop$Mode;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean sessionHasFailed> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean isDone> = v;
v = new oadd.org.apache.curator.SessionFailRetryLoop$1;
specialinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop$1: void <init>(oadd.org.apache.curator.SessionFailRetryLoop)>(v);
v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.zookeeper.Watcher watcher> = v;
v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.CuratorZookeeperClient client> = v;
v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.SessionFailRetryLoop$Mode mode> = v;
v = virtualinvoke v.<oadd.org.apache.curator.CuratorZookeeperClient: oadd.org.apache.curator.RetryLoop newRetryLoop()>();
v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.RetryLoop retryLoop> = v;
return;
}
static boolean sessionForThreadHasFailed()
{
java.util.Set v;
boolean v;
java.lang.Thread v;
v = <oadd.org.apache.curator.SessionFailRetryLoop: java.util.Set failedSessionThreads>;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
return v;
}
public void start()
{
oadd.org.apache.zookeeper.Watcher v;
java.lang.Thread v, v;
oadd.org.apache.curator.CuratorZookeeperClient v;
oadd.org.apache.curator.SessionFailRetryLoop v;
boolean v;
v := @this: oadd.org.apache.curator.SessionFailRetryLoop;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
staticinvoke <oadd.org.apache.curator.shaded.com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(v, "Not in the correct thread");
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.CuratorZookeeperClient client>;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.zookeeper.Watcher watcher>;
virtualinvoke v.<oadd.org.apache.curator.CuratorZookeeperClient: void addParentWatcher(oadd.org.apache.zookeeper.Watcher)>(v);
return;
}
public boolean shouldContinue()
{
java.util.concurrent.atomic.AtomicBoolean v;
oadd.org.apache.curator.SessionFailRetryLoop v;
boolean v, v;
v := @this: oadd.org.apache.curator.SessionFailRetryLoop;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean isDone>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean getAndSet(boolean)>(1);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void close()
{
java.util.Set v;
oadd.org.apache.curator.CuratorZookeeperClient v;
oadd.org.apache.zookeeper.Watcher v;
java.lang.Thread v, v, v;
oadd.org.apache.curator.SessionFailRetryLoop v;
boolean v;
v := @this: oadd.org.apache.curator.SessionFailRetryLoop;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
staticinvoke <oadd.org.apache.curator.shaded.com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(v, "Not in the correct thread");
v = <oadd.org.apache.curator.SessionFailRetryLoop: java.util.Set failedSessionThreads>;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread>;
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.CuratorZookeeperClient client>;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.zookeeper.Watcher watcher>;
virtualinvoke v.<oadd.org.apache.curator.CuratorZookeeperClient: void removeParentWatcher(oadd.org.apache.zookeeper.Watcher)>(v);
return;
}
public void takeException(java.lang.Exception) throws java.lang.Exception
{
java.util.concurrent.atomic.AtomicBoolean v, v, v;
oadd.org.apache.curator.RetryLoop v;
int[] v;
java.lang.Thread v, v, v;
int v, v;
oadd.org.apache.curator.SessionFailRetryLoop v;
boolean v, v, v, v;
java.util.Set v;
java.lang.Exception v;
oadd.org.apache.curator.SessionFailRetryLoop$Mode v;
v := @this: oadd.org.apache.curator.SessionFailRetryLoop;
v := @parameter: java.lang.Exception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
staticinvoke <oadd.org.apache.curator.shaded.com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(v, "Not in the correct thread");
v = 1;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean sessionHasFailed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <oadd.org.apache.curator.SessionFailRetryLoop$2: int[] $SwitchMap$org$apache$curator$SessionFailRetryLoop$Mode>;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.SessionFailRetryLoop$Mode mode>;
v = virtualinvoke v.<oadd.org.apache.curator.SessionFailRetryLoop$Mode: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean sessionHasFailed>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v = <oadd.org.apache.curator.SessionFailRetryLoop: java.util.Set failedSessionThreads>;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.lang.Thread ourThread>;
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
v = v instanceof oadd.org.apache.curator.SessionFailRetryLoop$SessionFailedException;
if v == 0 goto label;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: java.util.concurrent.atomic.AtomicBoolean isDone>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v = 0;
label:
if v == 0 goto label;
v = v.<oadd.org.apache.curator.SessionFailRetryLoop: oadd.org.apache.curator.RetryLoop retryLoop>;
virtualinvoke v.<oadd.org.apache.curator.RetryLoop: void takeException(java.lang.Exception)>(v);
label:
return;
}
static void <clinit>()
{
java.util.Set v;
java.util.concurrent.ConcurrentMap v;
v = staticinvoke <oadd.org.apache.curator.shaded.com.google.common.collect.Maps: java.util.concurrent.ConcurrentMap newConcurrentMap()>();
v = staticinvoke <oadd.org.apache.curator.shaded.com.google.common.collect.Sets: java.util.Set newSetFromMap(java.util.Map)>(v);
<oadd.org.apache.curator.SessionFailRetryLoop: java.util.Set failedSessionThreads> = v;
return;
}
}