final class io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor extends io.netty.util.concurrent.AbstractEventExecutor implements java.lang.Runnable, io.netty.util.concurrent.OrderedEventExecutor
{
private final io.netty.util.concurrent.EventExecutor executor;
private final java.util.Queue tasks;
private static final int NONE;
private static final int SUBMITTED;
private static final int RUNNING;
private final java.util.concurrent.atomic.AtomicInteger state;
private final int maxTaskExecutePerRun;
private final java.util.concurrent.atomic.AtomicReference executingThread;
void <init>(io.netty.util.concurrent.EventExecutor, int)
{
io.netty.util.concurrent.EventExecutor v;
java.util.concurrent.atomic.AtomicInteger v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
int v;
java.util.Queue v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutor;
v := @parameter: int;
specialinvoke v.<io.netty.util.concurrent.AbstractEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup)>(v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.Queue newMpscQueue()>();
v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.Queue tasks> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread> = v;
v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor> = v;
v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: int maxTaskExecutePerRun> = v;
return;
}
public void run()
{
java.util.concurrent.atomic.AtomicInteger v, v, v, v, v, v, v, v, v;
java.lang.Thread v;
boolean v, v, v, v, v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
java.util.Queue v, v, v;
io.netty.util.concurrent.EventExecutor v, v;
java.lang.Throwable v, v, v;
java.util.concurrent.atomic.AtomicReference v, v, v, v, v;
int v, v, v, v;
java.lang.Object v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(1, 2);
if v != 0 goto label;
return;
label:
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
label:
v = 0;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: int maxTaskExecutePerRun>;
if v >= v goto label;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.Queue tasks>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
staticinvoke <io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: void safeExecute(java.lang.Runnable)>(v);
v = v + 1;
goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: int maxTaskExecutePerRun>;
if v != v goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(1);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, null);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: void execute(java.lang.Runnable)>(v);
label:
return;
label:
v := @caughtexception;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(2);
goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.Queue tasks>;
v = interfaceinvoke v.<java.util.Queue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(0, 2);
if v != 0 goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, null);
return;
label:
v := @caughtexception;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: int maxTaskExecutePerRun>;
if v != v goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(1);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, null);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: void execute(java.lang.Runnable)>(v);
label:
return;
label:
v := @caughtexception;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(2);
goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.Queue tasks>;
v = interfaceinvoke v.<java.util.Queue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(0, 2);
if v != 0 goto label;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, null);
return;
label:
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public boolean inEventLoop(java.lang.Thread)
{
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
java.lang.Thread v;
java.lang.Object v;
java.util.concurrent.atomic.AtomicReference v;
boolean v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v := @parameter: java.lang.Thread;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicReference executingThread>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isShuttingDown()
{
io.netty.util.concurrent.EventExecutor v;
boolean v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: boolean isShutdown()>();
return v;
}
public io.netty.util.concurrent.Future shutdownGracefully(long, long, java.util.concurrent.TimeUnit)
{
io.netty.util.concurrent.EventExecutor v;
java.util.concurrent.TimeUnit v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
long v, v;
io.netty.util.concurrent.Future v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v := @parameter: long;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: io.netty.util.concurrent.Future shutdownGracefully(long,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public io.netty.util.concurrent.Future terminationFuture()
{
io.netty.util.concurrent.EventExecutor v;
io.netty.util.concurrent.Future v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: io.netty.util.concurrent.Future terminationFuture()>();
return v;
}
public void shutdown()
{
io.netty.util.concurrent.EventExecutor v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: void shutdown()>();
return;
}
public boolean isShutdown()
{
io.netty.util.concurrent.EventExecutor v;
boolean v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: boolean isShutdown()>();
return v;
}
public boolean isTerminated()
{
io.netty.util.concurrent.EventExecutor v;
boolean v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: boolean isTerminated()>();
return v;
}
public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException
{
io.netty.util.concurrent.EventExecutor v;
java.util.concurrent.TimeUnit v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
long v;
boolean v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
v = interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(v, v);
return v;
}
public void execute(java.lang.Runnable)
{
io.netty.util.concurrent.EventExecutor v;
java.lang.Runnable v;
java.util.concurrent.RejectedExecutionException v;
java.util.concurrent.atomic.AtomicInteger v;
io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor v;
java.util.Queue v;
boolean v, v;
v := @this: io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor;
v := @parameter: java.lang.Runnable;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.Queue tasks>;
v = interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
if v != 0 goto label;
v = new java.util.concurrent.RejectedExecutionException;
specialinvoke v.<java.util.concurrent.RejectedExecutionException: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(0, 1);
if v == 0 goto label;
v = v.<io.netty.util.concurrent.NonStickyEventExecutorGroup$NonStickyOrderedEventExecutor: io.netty.util.concurrent.EventExecutor executor>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: void execute(java.lang.Runnable)>(v);
label:
return;
}
}