final class org.apache.logging.log4j.core.async.DisruptorUtil extends java.lang.Object
{
private static final org.apache.logging.log4j.Logger LOGGER;
private static final int RINGBUFFER_MIN_SIZE;
private static final int RINGBUFFER_DEFAULT_SIZE;
private static final int RINGBUFFER_NO_GC_DEFAULT_SIZE;
public static final java.lang.String LOGGER_EXCEPTION_HANDLER_PROPERTY;
public static final java.lang.String LOGGER_CONFIG_EXCEPTION_HANDLER_PROPERTY;
static final boolean ASYNC_LOGGER_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL;
static final boolean ASYNC_CONFIG_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL;
static final int DISRUPTOR_MAJOR_VERSION;
private void <init>()
{
org.apache.logging.log4j.core.async.DisruptorUtil v;
v := @this: org.apache.logging.log4j.core.async.DisruptorUtil;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
static com.lmax.disruptor.WaitStrategy createWaitStrategy(java.lang.String, org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory)
{
org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory v;
org.apache.logging.log4j.core.async.DefaultAsyncWaitStrategyFactory v;
com.lmax.disruptor.WaitStrategy v, v;
org.apache.logging.log4j.Logger v, v;
java.lang.Class v;
java.lang.String v, v;
v := @parameter: java.lang.String;
v := @parameter: org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory;
if v != null goto label;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String)>("No AsyncWaitStrategyFactory was configured in the configuration, using default factory...");
v = new org.apache.logging.log4j.core.async.DefaultAsyncWaitStrategyFactory;
specialinvoke v.<org.apache.logging.log4j.core.async.DefaultAsyncWaitStrategyFactory: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.logging.log4j.core.async.DefaultAsyncWaitStrategyFactory: com.lmax.disruptor.WaitStrategy createWaitStrategy()>();
return v;
label:
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object)>("Using configured AsyncWaitStrategyFactory {}", v);
v = interfaceinvoke v.<org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory: com.lmax.disruptor.WaitStrategy createWaitStrategy()>();
return v;
}
static int calculateRingBufferSize(java.lang.String)
{
java.lang.Integer v, v;
org.apache.logging.log4j.util.PropertiesUtil v;
java.lang.Exception v;
org.apache.logging.log4j.Logger v, v;
int v, v, v, v;
java.lang.String v, v, v;
boolean v;
v := @parameter: java.lang.String;
v = <org.apache.logging.log4j.core.util.Constants: boolean ENABLE_THREADLOCALS>;
if v == 0 goto label;
v = 4096;
goto label;
label:
v = 262144;
label:
v = v;
v = staticinvoke <org.apache.logging.log4j.util.PropertiesUtil: org.apache.logging.log4j.util.PropertiesUtil getProperties()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(v);
v = virtualinvoke v.<org.apache.logging.log4j.util.PropertiesUtil: java.lang.String getStringProperty(java.lang.String,java.lang.String)>(v, v);
label:
v = staticinvoke <org.apache.logging.log4j.core.util.Integers: int parseInt(java.lang.String)>(v);
if v >= 128 goto label;
v = 128;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(128);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Invalid RingBufferSize {}, using minimum size {}.", v, v);
label:
v = v;
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Invalid RingBufferSize {}, using default size {}.", v, v);
label:
v = staticinvoke <org.apache.logging.log4j.core.util.Integers: int ceilingNextPowerOfTwo(int)>(v);
return v;
catch java.lang.Exception from label to label with label;
}
static com.lmax.disruptor.ExceptionHandler getAsyncLoggerExceptionHandler()
{
org.apache.logging.log4j.Logger v;
java.lang.Object v;
java.lang.ReflectiveOperationException v;
java.lang.String v;
java.util.function.Supplier v;
org.apache.logging.log4j.core.async.AsyncLoggerDefaultExceptionHandler v;
label:
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil$init__1120: java.util.function.Supplier bootstrap$()>();
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newCheckedInstanceOfProperty(java.lang.String,java.lang.Class,java.util.function.Supplier)>("AsyncLogger.ExceptionHandler", class "Lcom/lmax/disruptor/ExceptionHandler;", v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
v = virtualinvoke v.<java.lang.ReflectiveOperationException: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Invalid AsyncLogger.ExceptionHandler value: {}", v, v);
v = new org.apache.logging.log4j.core.async.AsyncLoggerDefaultExceptionHandler;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDefaultExceptionHandler: void <init>()>();
return v;
catch java.lang.ReflectiveOperationException from label to label with label;
}
static com.lmax.disruptor.ExceptionHandler getAsyncLoggerConfigExceptionHandler()
{
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDefaultExceptionHandler v;
java.lang.Object v;
java.lang.ReflectiveOperationException v;
java.lang.String v;
java.util.function.Supplier v;
label:
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil$init__1121: java.util.function.Supplier bootstrap$()>();
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newCheckedInstanceOfProperty(java.lang.String,java.lang.Class,java.util.function.Supplier)>("AsyncLoggerConfig.ExceptionHandler", class "Lcom/lmax/disruptor/ExceptionHandler;", v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER>;
v = virtualinvoke v.<java.lang.ReflectiveOperationException: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Invalid AsyncLogger.ExceptionHandler value: {}", v, v);
v = new org.apache.logging.log4j.core.async.AsyncLoggerConfigDefaultExceptionHandler;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDefaultExceptionHandler: void <init>()>();
return v;
catch java.lang.ReflectiveOperationException from label to label with label;
}
public static long getExecutorThreadId(java.util.concurrent.ExecutorService)
{
java.lang.IllegalStateException v;
java.util.concurrent.Future v;
java.lang.Object v;
java.util.concurrent.Callable v;
long v;
java.lang.Exception v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ExecutorService;
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil$lambda_getExecutorThreadId_0__1122: java.util.concurrent.Callable bootstrap$()>();
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.util.concurrent.Callable)>(v);
label:
v = interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Could not obtain executor thread Id. Giving up to avoid the risk of application deadlock.", v);
throw v;
catch java.lang.Exception from label to label with label;
}
static void <clinit>()
{
byte v;
org.apache.logging.log4j.status.StatusLogger v;
org.apache.logging.log4j.util.PropertiesUtil v, v;
boolean v, v, v;
v = staticinvoke <org.apache.logging.log4j.status.StatusLogger: org.apache.logging.log4j.status.StatusLogger getLogger()>();
<org.apache.logging.log4j.core.async.DisruptorUtil: org.apache.logging.log4j.Logger LOGGER> = v;
v = staticinvoke <org.apache.logging.log4j.util.PropertiesUtil: org.apache.logging.log4j.util.PropertiesUtil getProperties()>();
v = virtualinvoke v.<org.apache.logging.log4j.util.PropertiesUtil: boolean getBooleanProperty(java.lang.String,boolean)>("AsyncLogger.SynchronizeEnqueueWhenQueueFull", 1);
<org.apache.logging.log4j.core.async.DisruptorUtil: boolean ASYNC_LOGGER_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL> = v;
v = staticinvoke <org.apache.logging.log4j.util.PropertiesUtil: org.apache.logging.log4j.util.PropertiesUtil getProperties()>();
v = virtualinvoke v.<org.apache.logging.log4j.util.PropertiesUtil: boolean getBooleanProperty(java.lang.String,boolean)>("AsyncLoggerConfig.SynchronizeEnqueueWhenQueueFull", 1);
<org.apache.logging.log4j.core.async.DisruptorUtil: boolean ASYNC_CONFIG_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL> = v;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: boolean isClassAvailable(java.lang.String)>("com.lmax.disruptor.SequenceReportingEventHandler");
if v == 0 goto label;
v = 3;
goto label;
label:
v = 4;
label:
<org.apache.logging.log4j.core.async.DisruptorUtil: int DISRUPTOR_MAJOR_VERSION> = v;
return;
}
}