class org.apache.logging.log4j.core.async.AsyncLoggerDisruptor extends org.apache.logging.log4j.core.AbstractLifeCycle
{
private static final int SLEEP_MILLIS_BETWEEN_DRAIN_ATTEMPTS;
private static final int MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN;
private final java.lang.Object queueFullEnqueueLock;
private volatile com.lmax.disruptor.dsl.Disruptor disruptor;
private java.lang.String contextName;
private final java.util.function.Supplier waitStrategyFactorySupplier;
private boolean useThreadLocalTranslator;
private long backgroundThreadId;
private org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy;
private int ringBufferSize;
private com.lmax.disruptor.WaitStrategy waitStrategy;
private static com.lmax.disruptor.EventHandler createEventHandler()
{
java.lang.Throwable v;
org.apache.logging.log4j.Logger v;
int v;
org.apache.logging.log4j.core.async.RingBufferLogEventHandler v;
java.lang.Object v;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: int DISRUPTOR_MAJOR_VERSION>;
if v != 3 goto label;
label:
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOf(java.lang.String)>("org.apache.logging.log4j.core.async.RingBufferLogEventHandler");
label:
return v;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Failed to create event handler for LMAX Disruptor 3.x, trying version 4.x.", v);
label:
v = new org.apache.logging.log4j.core.async.RingBufferLogEventHandler;
specialinvoke v.<org.apache.logging.log4j.core.async.RingBufferLogEventHandler4: void <init>()>();
return v;
catch java.lang.ReflectiveOperationException from label to label with label;
catch java.lang.LinkageError from label to label with label;
}
void <init>(java.lang.String, java.util.function.Supplier)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
java.lang.Object v, v;
java.lang.String v;
java.util.function.Supplier v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: java.lang.String;
v := @parameter: java.util.function.Supplier;
specialinvoke v.<org.apache.logging.log4j.core.AbstractLifeCycle: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.Object queueFullEnqueueLock> = v;
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean useThreadLocalTranslator> = 1;
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName> = v;
v = staticinvoke <java.util.Objects: java.lang.Object requireNonNull(java.lang.Object,java.lang.String)>(v, "waitStrategyFactorySupplier");
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.util.function.Supplier waitStrategyFactorySupplier> = v;
return;
}
com.lmax.disruptor.WaitStrategy getWaitStrategy()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.WaitStrategy v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
return v;
}
public java.lang.String getContextName()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
java.lang.String v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
return v;
}
public void setContextName(java.lang.String)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
java.lang.String v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: java.lang.String;
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName> = v;
return;
}
com.lmax.disruptor.dsl.Disruptor getDisruptor()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.dsl.Disruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
return v;
}
public synchronized void start()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor$1 v;
java.lang.Integer v;
org.apache.logging.log4j.core.async.RingBufferLogEvent$Factory v;
boolean v, v;
com.lmax.disruptor.WaitStrategy v, v, v;
org.apache.logging.log4j.Logger v, v, v, v, v;
com.lmax.disruptor.ExceptionHandler v;
java.util.function.Supplier v;
com.lmax.disruptor.EventHandler[] v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
int v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
com.lmax.disruptor.EventHandler v;
com.lmax.disruptor.RingBuffer v;
com.lmax.disruptor.dsl.ProducerType v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v;
java.lang.Class v;
java.lang.Object v;
com.lmax.disruptor.dsl.Disruptor v, v, v, v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
if v == null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor not starting new disruptor for this context, using existing object.", v);
return;
label:
v = virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean isStarting()>();
if v == 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor is already starting.", v);
return;
label:
virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void setStarting()>();
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor creating new disruptor for this context.", v);
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: int calculateRingBufferSize(java.lang.String)>("AsyncLogger.RingBufferSize");
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: int ringBufferSize> = v;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.util.function.Supplier waitStrategyFactorySupplier>;
v = interfaceinvoke v.<java.util.function.Supplier: java.lang.Object get()>();
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: com.lmax.disruptor.WaitStrategy createWaitStrategy(java.lang.String,org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory)>("AsyncLogger.WaitStrategy", v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy> = v;
v = new org.apache.logging.log4j.core.async.AsyncLoggerDisruptor$1;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
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[])>("AsyncLogger[\u]");
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor$1: void <init>(org.apache.logging.log4j.core.async.AsyncLoggerDisruptor,java.lang.String,boolean,int)>(v, v, 1, 5);
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncQueueFullPolicyFactory: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy create()>();
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy> = v;
v = new com.lmax.disruptor.dsl.Disruptor;
v = <org.apache.logging.log4j.core.async.RingBufferLogEvent: org.apache.logging.log4j.core.async.RingBufferLogEvent$Factory FACTORY>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: int ringBufferSize>;
v = <com.lmax.disruptor.dsl.ProducerType: com.lmax.disruptor.dsl.ProducerType MULTI>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
specialinvoke v.<com.lmax.disruptor.dsl.Disruptor: void <init>(com.lmax.disruptor.EventFactory,int,java.util.concurrent.ThreadFactory,com.lmax.disruptor.dsl.ProducerType,com.lmax.disruptor.WaitStrategy)>(v, v, v, v, v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor> = v;
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: com.lmax.disruptor.ExceptionHandler getAsyncLoggerExceptionHandler()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void setDefaultExceptionHandler(com.lmax.disruptor.ExceptionHandler)>(v);
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.EventHandler createEventHandler()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = newarray (com.lmax.disruptor.EventHandler)[1];
v[0] = v;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.dsl.EventHandlerGroup handleEventsWith(com.lmax.disruptor.EventHandler[])>(v);
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: int getBufferSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)>("[{}] Starting AsyncLogger disruptor for this context with ringbufferSize={}, waitStrategy={}, exceptionHandler={}...", v, v, v, v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer start()>();
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean useThreadLocalTranslator>;
if v == 0 goto label;
v = "threadlocal";
goto label;
label:
v = "vararg";
label:
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("[{}] AsyncLoggers use a {} translator", v, v);
specialinvoke v.<org.apache.logging.log4j.core.AbstractLifeCycle: void start()>();
return;
}
public boolean stop(long, java.util.concurrent.TimeUnit)
{
java.lang.Throwable v;
long v, v, v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
byte v;
java.lang.Long v, v;
int v;
java.lang.String v, v, v, v;
boolean v;
java.util.concurrent.TimeUnit v;
org.apache.logging.log4j.Logger v, v, v, v, v;
java.lang.InterruptedException v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v, v, v;
com.lmax.disruptor.dsl.Disruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor getDisruptor()>();
if v != null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor: disruptor for this context already shut down.", v);
return 1;
label:
virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void setStopping()>();
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor: shutting down disruptor for this context.", v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor> = null;
v = 0;
label:
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean hasBacklog(com.lmax.disruptor.dsl.Disruptor)>(v);
if v == 0 goto label;
if v >= 200 goto label;
label:
staticinvoke <java.lang.Thread: void sleep(long)>(50L);
label:
goto label;
label:
v := @caughtexception;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void shutdown(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object)>("[{}] AsyncLoggerDisruptor: shutdown timed out after {} {}", v, v, v);
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void halt()>();
label:
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object)>("[{}] AsyncLoggerDisruptor: disruptor has been shut down.", v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = staticinvoke <org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy: long getDiscardCount(org.apache.logging.log4j.core.async.AsyncQueueFullPolicy)>(v);
v = v cmp 0L;
if v <= 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = staticinvoke <org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy: long getDiscardCount(org.apache.logging.log4j.core.async.AsyncQueueFullPolicy)>(v);
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("AsyncLoggerDisruptor: {} discarded {} events.", v, v);
label:
virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void setStopped()>();
return 1;
catch java.lang.InterruptedException from label to label with label;
catch com.lmax.disruptor.TimeoutException from label to label with label;
}
private static boolean hasBacklog(com.lmax.disruptor.dsl.Disruptor)
{
com.lmax.disruptor.RingBuffer v;
int v;
com.lmax.disruptor.dsl.Disruptor v;
boolean v, v;
v := @parameter: com.lmax.disruptor.dsl.Disruptor;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: int getBufferSize()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: boolean hasAvailableCapacity(int)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.apache.logging.log4j.core.jmx.RingBufferAdmin createRingBufferAdmin(java.lang.String)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.RingBuffer v;
java.lang.String v;
com.lmax.disruptor.dsl.Disruptor v, v;
org.apache.logging.log4j.core.jmx.RingBufferAdmin v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: java.lang.String;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
if v != null goto label;
v = null;
goto label;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
label:
v = staticinvoke <org.apache.logging.log4j.core.jmx.RingBufferAdmin: org.apache.logging.log4j.core.jmx.RingBufferAdmin forAsyncLogger(com.lmax.disruptor.RingBuffer,java.lang.String)>(v, v);
return v;
}
org.apache.logging.log4j.core.async.EventRoute getEventRoute(org.apache.logging.log4j.Level)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v;
int v;
org.apache.logging.log4j.Level v;
long v;
org.apache.logging.log4j.core.async.EventRoute v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: org.apache.logging.log4j.Level;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: int remainingDisruptorCapacity()>();
if v >= 0 goto label;
v = <org.apache.logging.log4j.core.async.EventRoute: org.apache.logging.log4j.core.async.EventRoute DISCARD>;
return v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: long backgroundThreadId>;
v = interfaceinvoke v.<org.apache.logging.log4j.core.async.AsyncQueueFullPolicy: org.apache.logging.log4j.core.async.EventRoute getRoute(long,org.apache.logging.log4j.Level)>(v, v);
return v;
}
private int remainingDisruptorCapacity()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.RingBuffer v;
int v;
long v;
com.lmax.disruptor.dsl.Disruptor v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean hasLog4jBeenShutDown(com.lmax.disruptor.dsl.Disruptor)>(v);
if v == 0 goto label;
v = (int) -1;
return v;
label:
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: long remainingCapacity()>();
return v;
}
private boolean hasLog4jBeenShutDown(com.lmax.disruptor.dsl.Disruptor)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
org.apache.logging.log4j.Logger v;
com.lmax.disruptor.dsl.Disruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: com.lmax.disruptor.dsl.Disruptor;
if v != null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String)>("Ignoring log event after log4j was shut down");
return 1;
label:
return 0;
}
boolean tryPublish(org.apache.logging.log4j.core.async.RingBufferLogEventTranslator)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.RingBuffer v;
com.lmax.disruptor.dsl.Disruptor v;
java.lang.NullPointerException v;
org.apache.logging.log4j.core.async.RingBufferLogEventTranslator v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: org.apache.logging.log4j.core.async.RingBufferLogEventTranslator;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: boolean tryPublishEvent(com.lmax.disruptor.EventTranslator)>(v);
label:
return v;
label:
v := @caughtexception;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.core.async.RingBufferLogEventTranslator)>(v);
return 0;
catch java.lang.NullPointerException from label to label with label;
}
void enqueueLogMessageWhenQueueFull(org.apache.logging.log4j.core.async.RingBufferLogEventTranslator)
{
java.lang.Throwable v;
java.lang.NullPointerException v;
org.apache.logging.log4j.core.async.RingBufferLogEventTranslator v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
java.lang.Object v;
com.lmax.disruptor.dsl.Disruptor v, v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: org.apache.logging.log4j.core.async.RingBufferLogEventTranslator;
label:
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean synchronizeEnqueueWhenQueueFull()>();
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.Object queueFullEnqueueLock>;
entermonitor v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void publishEvent(com.lmax.disruptor.EventTranslator)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void publishEvent(com.lmax.disruptor.EventTranslator)>(v);
label:
goto label;
label:
v := @caughtexception;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.core.async.RingBufferLogEventTranslator)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.NullPointerException from label to label with label;
}
void enqueueLogMessageWhenQueueFull(com.lmax.disruptor.EventTranslatorVararg, org.apache.logging.log4j.core.async.AsyncLogger, java.lang.StackTraceElement, java.lang.String, org.apache.logging.log4j.Level, org.apache.logging.log4j.Marker, org.apache.logging.log4j.message.Message, java.lang.Throwable)
{
java.lang.Throwable v, v;
java.lang.Object[] v, v;
org.apache.logging.log4j.Level v;
java.lang.NullPointerException v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
com.lmax.disruptor.EventTranslatorVararg v;
org.apache.logging.log4j.message.Message v;
org.apache.logging.log4j.core.async.AsyncLogger v;
java.lang.StackTraceElement v;
java.lang.String v;
org.apache.logging.log4j.Marker v;
boolean v;
com.lmax.disruptor.RingBuffer v, v;
java.lang.Object v;
com.lmax.disruptor.dsl.Disruptor v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: com.lmax.disruptor.EventTranslatorVararg;
v := @parameter: org.apache.logging.log4j.core.async.AsyncLogger;
v := @parameter: java.lang.StackTraceElement;
v := @parameter: java.lang.String;
v := @parameter: org.apache.logging.log4j.Level;
v := @parameter: org.apache.logging.log4j.Marker;
v := @parameter: org.apache.logging.log4j.message.Message;
v := @parameter: java.lang.Throwable;
label:
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean synchronizeEnqueueWhenQueueFull()>();
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.Object queueFullEnqueueLock>;
entermonitor v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = newarray (java.lang.Object)[7];
v[0] = v;
v[1] = v;
v[2] = v;
v[3] = v;
v[4] = v;
v[5] = v;
v[6] = v;
virtualinvoke v.<com.lmax.disruptor.RingBuffer: void publishEvent(com.lmax.disruptor.EventTranslatorVararg,java.lang.Object[])>(v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = newarray (java.lang.Object)[7];
v[0] = v;
v[1] = v;
v[2] = v;
v[3] = v;
v[4] = v;
v[5] = v;
v[6] = v;
virtualinvoke v.<com.lmax.disruptor.RingBuffer: void publishEvent(com.lmax.disruptor.EventTranslatorVararg,java.lang.Object[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.message.Message,java.lang.Throwable)>(v, v, v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.NullPointerException from label to label with label;
}
private boolean synchronizeEnqueueWhenQueueFull()
{
long v, v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
byte v;
java.lang.Thread v, v;
boolean v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: boolean ASYNC_LOGGER_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL>;
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: long backgroundThreadId>;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: long getId()>();
v = v cmp v;
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v instanceof org.apache.logging.log4j.core.util.Log4jThread;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.core.async.RingBufferLogEventTranslator)
{
java.lang.Throwable v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
org.apache.logging.log4j.message.Message v;
org.apache.logging.log4j.Level v;
java.lang.String v;
org.apache.logging.log4j.core.async.RingBufferLogEventTranslator v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: org.apache.logging.log4j.core.async.RingBufferLogEventTranslator;
v = v.<org.apache.logging.log4j.core.async.RingBufferLogEventTranslator: org.apache.logging.log4j.Level level>;
v = v.<org.apache.logging.log4j.core.async.RingBufferLogEventTranslator: java.lang.String loggerName>;
v = v.<org.apache.logging.log4j.core.async.RingBufferLogEventTranslator: org.apache.logging.log4j.message.Message message>;
v = v.<org.apache.logging.log4j.core.async.RingBufferLogEventTranslator: java.lang.Throwable thrown>;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.message.Message,java.lang.Throwable)>(v, v, v, v);
return;
}
private void logWarningOnNpeFromDisruptorPublish(org.apache.logging.log4j.Level, java.lang.String, org.apache.logging.log4j.message.Message, java.lang.Throwable)
{
java.lang.Throwable v;
org.apache.logging.log4j.Level v;
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.message.Message v;
java.lang.Object v;
java.lang.String v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: org.apache.logging.log4j.Level;
v := @parameter: java.lang.String;
v := @parameter: org.apache.logging.log4j.message.Message;
v := @parameter: java.lang.Throwable;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
v = interfaceinvoke v.<org.apache.logging.log4j.message.Message: java.lang.String getFormattedMessage()>();
if v != null goto label;
v = "";
goto label;
label:
v = staticinvoke <org.apache.logging.log4j.core.util.Throwables: java.util.List toStringList(java.lang.Throwable)>(v);
label:
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)>("[{}] Ignoring log event after log4j was shut down: {} [{}] {}{}", v, v, v, v, v);
return;
}
public boolean isUseThreadLocals()
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean useThreadLocalTranslator>;
return v;
}
public void setUseThreadLocals(boolean)
{
org.apache.logging.log4j.core.async.AsyncLoggerDisruptor v;
org.apache.logging.log4j.Logger v;
java.lang.String v, v;
boolean v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerDisruptor;
v := @parameter: boolean;
v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean useThreadLocalTranslator> = v;
v = <org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: java.lang.String contextName>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerDisruptor: boolean useThreadLocalTranslator>;
if v == 0 goto label;
v = "threadlocal";
goto label;
label:
v = "vararg";
label:
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("[{}] AsyncLoggers have been modified to use a {} translator", v, v);
return;
}
}