public class org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy extends java.lang.Object implements org.apache.logging.log4j.core.config.ReliabilityStrategy, org.apache.logging.log4j.core.config.LocationAwareReliabilityStrategy
{
private static final int MAX_RETRIES;
private final java.util.concurrent.atomic.AtomicInteger counter;
private final java.util.concurrent.atomic.AtomicBoolean shutdown;
private final java.util.concurrent.locks.Lock shutdownLock;
private final java.util.concurrent.locks.Condition noLogEvents;
private final org.apache.logging.log4j.core.config.LoggerConfig loggerConfig;
public void <init>(org.apache.logging.log4j.core.config.LoggerConfig)
{
org.apache.logging.log4j.core.config.LoggerConfig v;
java.util.concurrent.locks.ReentrantLock v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.Object v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.core.config.LoggerConfig;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicInteger counter> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicBoolean shutdown> = v;
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock> = v;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
v = interfaceinvoke v.<java.util.concurrent.locks.Lock: java.util.concurrent.locks.Condition newCondition()>();
v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Condition noLogEvents> = v;
v = staticinvoke <java.util.Objects: java.lang.Object requireNonNull(java.lang.Object,java.lang.String)>(v, "loggerConfig is null");
v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig loggerConfig> = v;
return;
}
public void log(org.apache.logging.log4j.util.Supplier, java.lang.String, java.lang.String, org.apache.logging.log4j.Marker, org.apache.logging.log4j.Level, org.apache.logging.log4j.message.Message, java.lang.Throwable)
{
java.lang.Throwable v, v;
org.apache.logging.log4j.core.config.LoggerConfig v;
org.apache.logging.log4j.Level v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
org.apache.logging.log4j.message.Message v;
org.apache.logging.log4j.util.Supplier v;
org.apache.logging.log4j.core.config.ReliabilityStrategy v, v;
java.lang.String v, v;
org.apache.logging.log4j.Marker v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.util.Supplier;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: org.apache.logging.log4j.Marker;
v := @parameter: org.apache.logging.log4j.Level;
v := @parameter: org.apache.logging.log4j.message.Message;
v := @parameter: java.lang.Throwable;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig getActiveLoggerConfig(org.apache.logging.log4j.util.Supplier)>(v);
label:
virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: void log(java.lang.String,java.lang.String,org.apache.logging.log4j.Marker,org.apache.logging.log4j.Level,org.apache.logging.log4j.message.Message,java.lang.Throwable)>(v, v, v, v, v, v);
label:
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void log(org.apache.logging.log4j.util.Supplier, java.lang.String, java.lang.String, java.lang.StackTraceElement, org.apache.logging.log4j.Marker, org.apache.logging.log4j.Level, org.apache.logging.log4j.message.Message, java.lang.Throwable)
{
java.lang.Throwable v, v;
org.apache.logging.log4j.core.config.LoggerConfig v;
org.apache.logging.log4j.Level v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
org.apache.logging.log4j.message.Message v;
org.apache.logging.log4j.util.Supplier v;
org.apache.logging.log4j.core.config.ReliabilityStrategy v, v;
java.lang.StackTraceElement v;
java.lang.String v, v;
org.apache.logging.log4j.Marker v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.util.Supplier;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.StackTraceElement;
v := @parameter: org.apache.logging.log4j.Marker;
v := @parameter: org.apache.logging.log4j.Level;
v := @parameter: org.apache.logging.log4j.message.Message;
v := @parameter: java.lang.Throwable;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig getActiveLoggerConfig(org.apache.logging.log4j.util.Supplier)>(v);
label:
virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: void log(java.lang.String,java.lang.String,java.lang.StackTraceElement,org.apache.logging.log4j.Marker,org.apache.logging.log4j.Level,org.apache.logging.log4j.message.Message,java.lang.Throwable)>(v, v, v, v, v, v, v);
label:
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void log(org.apache.logging.log4j.util.Supplier, org.apache.logging.log4j.core.LogEvent)
{
java.lang.Throwable v;
org.apache.logging.log4j.core.config.LoggerConfig v;
org.apache.logging.log4j.util.Supplier v;
org.apache.logging.log4j.core.config.ReliabilityStrategy v, v;
org.apache.logging.log4j.core.LogEvent v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.util.Supplier;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig getActiveLoggerConfig(org.apache.logging.log4j.util.Supplier)>(v);
label:
virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: void log(org.apache.logging.log4j.core.LogEvent)>(v);
label:
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: void afterLogEvent()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public org.apache.logging.log4j.core.config.LoggerConfig getActiveLoggerConfig(org.apache.logging.log4j.util.Supplier)
{
org.apache.logging.log4j.core.config.LoggerConfig v, v, v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
org.apache.logging.log4j.util.Supplier v;
org.apache.logging.log4j.core.config.ReliabilityStrategy v;
java.lang.Object v;
boolean v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.util.Supplier;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig loggerConfig>;
v = specialinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: boolean beforeLogEvent()>();
if v != 0 goto label;
v = interfaceinvoke v.<org.apache.logging.log4j.util.Supplier: java.lang.Object get()>();
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig loggerConfig>;
if v != v goto label;
v = v;
goto label;
label:
v = virtualinvoke v.<org.apache.logging.log4j.core.config.LoggerConfig: org.apache.logging.log4j.core.config.ReliabilityStrategy getReliabilityStrategy()>();
v = interfaceinvoke v.<org.apache.logging.log4j.core.config.ReliabilityStrategy: org.apache.logging.log4j.core.config.LoggerConfig getActiveLoggerConfig(org.apache.logging.log4j.util.Supplier)>(v);
label:
return v;
label:
return v;
}
private boolean beforeLogEvent()
{
java.util.concurrent.atomic.AtomicInteger v;
int v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
boolean v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicInteger counter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void afterLogEvent()
{
java.util.concurrent.atomic.AtomicInteger v;
int v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
boolean v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicInteger counter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
if v != 0 goto label;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicBoolean shutdown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
specialinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: void signalCompletionIfShutdown()>();
label:
return;
}
private void signalCompletionIfShutdown()
{
java.lang.Throwable v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Condition noLogEvents>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void beforeStopAppenders()
{
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
specialinvoke v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: void waitForCompletion()>();
return;
}
private void waitForCompletion()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v;
boolean v, v;
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v, v, v, v;
java.lang.InterruptedException v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicBoolean shutdown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
v = 0;
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicInteger counter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(0, -2147483648);
if v != 0 goto label;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.atomic.AtomicInteger counter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v >= 0 goto label;
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
return;
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Condition noLogEvents>;
v = v + 1;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: boolean await(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = v + 1;
if v <= 3 goto label;
label:
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy: java.util.concurrent.locks.Lock shutdownLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
throw v;
label:
return;
catch java.lang.InterruptedException 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 void beforeStopConfiguration(org.apache.logging.log4j.core.config.Configuration)
{
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy v;
org.apache.logging.log4j.core.config.Configuration v;
v := @this: org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy;
v := @parameter: org.apache.logging.log4j.core.config.Configuration;
return;
}
}