public final class io.netty.util.concurrent.GlobalEventExecutor extends io.netty.util.concurrent.AbstractScheduledEventExecutor implements io.netty.util.concurrent.OrderedEventExecutor
{
private static final io.netty.util.internal.logging.InternalLogger logger;
private static final long SCHEDULE_QUIET_PERIOD_INTERVAL;
public static final io.netty.util.concurrent.GlobalEventExecutor INSTANCE;
final java.util.concurrent.BlockingQueue taskQueue;
final io.netty.util.concurrent.ScheduledFutureTask quietPeriodTask;
final java.util.concurrent.ThreadFactory threadFactory;
private final io.netty.util.concurrent.GlobalEventExecutor$TaskRunner taskRunner;
private final java.util.concurrent.atomic.AtomicBoolean started;
volatile java.lang.Thread thread;
private final io.netty.util.concurrent.Future terminationFuture;
private void <init>()
{
io.netty.util.concurrent.ScheduledFutureTask v, v;
io.netty.util.concurrent.DefaultThreadFactory v;
io.netty.util.internal.PriorityQueue v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.Callable v;
long v, v, v, v, v;
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.String v;
java.util.concurrent.ThreadFactory v;
io.netty.util.concurrent.GlobalEventExecutor$TaskRunner v;
java.lang.UnsupportedOperationException v;
java.util.concurrent.LinkedBlockingQueue v;
java.lang.Class v;
io.netty.util.concurrent.FailedFuture v;
io.netty.util.concurrent.GlobalEventExecutor$1 v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: void <init>()>();
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>()>();
v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.BlockingQueue taskQueue> = v;
v = new io.netty.util.concurrent.ScheduledFutureTask;
v = new io.netty.util.concurrent.GlobalEventExecutor$1;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor$1: void <init>(io.netty.util.concurrent.GlobalEventExecutor)>(v);
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.Callable callable(java.lang.Runnable,java.lang.Object)>(v, null);
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: long getCurrentTimeNanos()>();
v = <io.netty.util.concurrent.GlobalEventExecutor: long SCHEDULE_QUIET_PERIOD_INTERVAL>;
v = staticinvoke <io.netty.util.concurrent.GlobalEventExecutor: long deadlineNanos(long,long)>(v, v);
v = <io.netty.util.concurrent.GlobalEventExecutor: long SCHEDULE_QUIET_PERIOD_INTERVAL>;
v = neg v;
specialinvoke v.<io.netty.util.concurrent.ScheduledFutureTask: void <init>(io.netty.util.concurrent.AbstractScheduledEventExecutor,java.util.concurrent.Callable,long,long)>(v, v, v, v);
v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.ScheduledFutureTask quietPeriodTask> = v;
v = new io.netty.util.concurrent.GlobalEventExecutor$TaskRunner;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor$TaskRunner: void <init>(io.netty.util.concurrent.GlobalEventExecutor)>(v);
v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.GlobalEventExecutor$TaskRunner taskRunner> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.atomic.AtomicBoolean started> = v;
v = new io.netty.util.concurrent.FailedFuture;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>()>();
specialinvoke v.<io.netty.util.concurrent.FailedFuture: void <init>(io.netty.util.concurrent.EventExecutor,java.lang.Throwable)>(v, v);
v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.Future terminationFuture> = v;
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue()>();
v = v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.ScheduledFutureTask quietPeriodTask>;
interfaceinvoke v.<io.netty.util.internal.PriorityQueue: boolean add(java.lang.Object)>(v);
v = new io.netty.util.concurrent.DefaultThreadFactory;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <io.netty.util.concurrent.DefaultThreadFactory: java.lang.String toPoolName(java.lang.Class)>(v);
specialinvoke v.<io.netty.util.concurrent.DefaultThreadFactory: void <init>(java.lang.String,boolean,int,java.lang.ThreadGroup)>(v, 0, 5, null);
v = staticinvoke <io.netty.util.internal.ThreadExecutorMap: java.util.concurrent.ThreadFactory apply(java.util.concurrent.ThreadFactory,io.netty.util.concurrent.EventExecutor)>(v, v);
v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.ThreadFactory threadFactory> = v;
return;
}
java.lang.Runnable takeTask()
{
io.netty.util.concurrent.ScheduledFutureTask v;
java.util.concurrent.BlockingQueue v;
long v;
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.TimeUnit v;
byte v;
java.lang.InterruptedException v, v;
java.lang.Object v, v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.BlockingQueue taskQueue>;
label:
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.ScheduledFutureTask peekScheduledTask()>();
if v != null goto label;
label:
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object take()>();
label:
goto label;
label:
v := @caughtexception;
label:
return v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.ScheduledFutureTask: long delayNanos()>();
v = v cmp 0L;
if v <= 0 goto label;
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
return null;
label:
if v != null goto label;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: void fetchFromScheduledTaskQueue()>();
interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll()>();
label:
if v == null goto label;
return v;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
private void fetchFromScheduledTaskQueue()
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.BlockingQueue v;
long v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: long getCurrentTimeNanos()>();
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: java.lang.Runnable pollScheduledTask(long)>(v);
label:
if v == null goto label;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.BlockingQueue taskQueue>;
interfaceinvoke v.<java.util.concurrent.BlockingQueue: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: java.lang.Runnable pollScheduledTask(long)>(v);
goto label;
label:
return;
}
public int pendingTasks()
{
int v;
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.BlockingQueue v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.BlockingQueue taskQueue>;
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: int size()>();
return v;
}
private void addTask(java.lang.Runnable)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.Object v;
java.util.concurrent.BlockingQueue v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: java.lang.Runnable;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.BlockingQueue taskQueue>;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
interfaceinvoke v.<java.util.concurrent.BlockingQueue: boolean add(java.lang.Object)>(v);
return;
}
public boolean inEventLoop(java.lang.Thread)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.Thread v, v;
boolean v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: java.lang.Thread;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.lang.Thread thread>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public io.netty.util.concurrent.Future shutdownGracefully(long, long, java.util.concurrent.TimeUnit)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.TimeUnit v;
long v, v;
io.netty.util.concurrent.Future v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: long;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.Future terminationFuture()>();
return v;
}
public io.netty.util.concurrent.Future terminationFuture()
{
io.netty.util.concurrent.GlobalEventExecutor v;
io.netty.util.concurrent.Future v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.Future terminationFuture>;
return v;
}
public void shutdown()
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.UnsupportedOperationException v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>()>();
throw v;
}
public boolean isShuttingDown()
{
io.netty.util.concurrent.GlobalEventExecutor v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
return 0;
}
public boolean isShutdown()
{
io.netty.util.concurrent.GlobalEventExecutor v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
return 0;
}
public boolean isTerminated()
{
io.netty.util.concurrent.GlobalEventExecutor v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
return 0;
}
public boolean awaitTermination(long, java.util.concurrent.TimeUnit)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.TimeUnit v;
long v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
return 0;
}
public boolean awaitInactivity(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException
{
java.lang.IllegalStateException v;
long v, v;
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.TimeUnit v;
java.lang.Thread v;
boolean v, v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "unit");
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.lang.Thread thread>;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("thread was not started");
throw v;
label:
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMillis(long)>(v);
virtualinvoke v.<java.lang.Thread: void join(long)>(v);
v = virtualinvoke v.<java.lang.Thread: boolean isAlive()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void execute(java.lang.Runnable)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: java.lang.Runnable;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: void execute0(java.lang.Runnable)>(v);
return;
}
private void execute0(java.lang.Runnable)
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.lang.Object v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v := @parameter: java.lang.Runnable;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: void addTask(java.lang.Runnable)>(v);
v = virtualinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: void startThread()>();
label:
return;
}
private void startThread()
{
io.netty.util.concurrent.GlobalEventExecutor v;
io.netty.util.concurrent.GlobalEventExecutor$TaskRunner v;
java.lang.Thread v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.ThreadFactory v;
io.netty.util.concurrent.GlobalEventExecutor$2 v;
boolean v;
v := @this: io.netty.util.concurrent.GlobalEventExecutor;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: java.util.concurrent.ThreadFactory threadFactory>;
v = v.<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.GlobalEventExecutor$TaskRunner taskRunner>;
v = interfaceinvoke v.<java.util.concurrent.ThreadFactory: java.lang.Thread newThread(java.lang.Runnable)>(v);
v = new io.netty.util.concurrent.GlobalEventExecutor$2;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor$2: void <init>(io.netty.util.concurrent.GlobalEventExecutor,java.lang.Thread)>(v, v);
staticinvoke <java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>(v);
v.<io.netty.util.concurrent.GlobalEventExecutor: java.lang.Thread thread> = v;
virtualinvoke v.<java.lang.Thread: void start()>();
label:
return;
}
static void <clinit>()
{
io.netty.util.concurrent.GlobalEventExecutor v;
java.util.concurrent.TimeUnit v;
io.netty.util.internal.logging.InternalLogger v, v;
int v;
long v;
java.lang.Integer v;
v = staticinvoke <io.netty.util.internal.logging.InternalLoggerFactory: io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Lio/netty/util/concurrent/GlobalEventExecutor;");
<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.internal.logging.InternalLogger logger> = v;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: int getInt(java.lang.String,int)>("io.netty.globalEventExecutor.quietPeriodSeconds", 1);
if v > 0 goto label;
v = 1;
label:
v = <io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.internal.logging.InternalLogger logger>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("-Dio.netty.globalEventExecutor.quietPeriodSeconds: {}", v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
<io.netty.util.concurrent.GlobalEventExecutor: long SCHEDULE_QUIET_PERIOD_INTERVAL> = v;
v = new io.netty.util.concurrent.GlobalEventExecutor;
specialinvoke v.<io.netty.util.concurrent.GlobalEventExecutor: void <init>()>();
<io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.GlobalEventExecutor INSTANCE> = v;
return;
}
}