public abstract class org.apache.activemq.transport.AbstractInactivityMonitor extends org.apache.activemq.transport.TransportFilter
{
private static final org.slf4j.Logger LOG;
private static final long DEFAULT_CHECK_TIME_MILLS;
private static java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS;
private static int CHECKER_COUNTER;
private static java.util.Timer READ_CHECK_TIMER;
private static java.util.Timer WRITE_CHECK_TIMER;
private final java.util.concurrent.atomic.AtomicBoolean monitorStarted;
private final java.util.concurrent.atomic.AtomicBoolean commandSent;
private final java.util.concurrent.atomic.AtomicBoolean inSend;
private final java.util.concurrent.atomic.AtomicBoolean failed;
private final java.util.concurrent.atomic.AtomicBoolean commandReceived;
private final java.util.concurrent.atomic.AtomicBoolean inReceive;
private final java.util.concurrent.atomic.AtomicInteger lastReceiveCounter;
private final java.util.concurrent.locks.ReentrantReadWriteLock sendLock;
private org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask;
private org.apache.activemq.thread.SchedulerTimerTask writeCheckerTask;
private org.apache.activemq.thread.SchedulerTimerTask readCheckerTask;
private long connectAttemptTimeout;
private long readCheckTime;
private long writeCheckTime;
private long initialDelayTime;
private boolean useKeepAlive;
private boolean keepAliveResponseRequired;
protected org.apache.activemq.wireformat.WireFormat wireFormat;
private final java.lang.Runnable connectChecker;
private final java.lang.Runnable readChecker;
private final java.lang.Runnable writeChecker;
private final java.util.concurrent.ThreadFactory factory;
private boolean allowReadCheck(long)
{
byte v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
long v, v, v, v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
v = v * 9L;
v = v / 10L;
v = v cmp v;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void <init>(org.apache.activemq.transport.Transport, org.apache.activemq.wireformat.WireFormat)
{
org.apache.activemq.transport.AbstractInactivityMonitor$1 v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
org.apache.activemq.transport.AbstractInactivityMonitor$2 v;
org.apache.activemq.wireformat.WireFormat v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v, v, v;
org.apache.activemq.transport.Transport v;
java.util.concurrent.locks.ReentrantReadWriteLock v;
java.util.concurrent.atomic.AtomicInteger v;
org.apache.activemq.transport.AbstractInactivityMonitor$6 v;
org.apache.activemq.transport.AbstractInactivityMonitor$3 v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: org.apache.activemq.transport.Transport;
v := @parameter: org.apache.activemq.wireformat.WireFormat;
specialinvoke v.<org.apache.activemq.transport.TransportFilter: void <init>(org.apache.activemq.transport.Transport)>(v);
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandSent> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inSend> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean failed> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(1);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandReceived> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inReceive> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicInteger lastReceiveCounter> = v;
v = new java.util.concurrent.locks.ReentrantReadWriteLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: void <init>()>();
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock> = v;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long connectAttemptTimeout> = 30000L;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime> = 30000L;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime> = 30000L;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long initialDelayTime> = 30000L;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean useKeepAlive> = 1;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$1;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$1: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable connectChecker> = v;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$2;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$2: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable readChecker> = v;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$3;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$3: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable writeChecker> = v;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$6;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$6: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadFactory factory> = v;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.wireformat.WireFormat wireFormat> = v;
return;
}
public void start() throws java.lang.Exception
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.Transport next>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void startMonitorThreads()>();
return;
}
public void stop() throws java.lang.Exception
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void stopMonitorThreads()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.Transport next>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void stop()>();
return;
}
final void writeCheck()
{
java.util.concurrent.ThreadPoolExecutor v, v, v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
java.util.concurrent.RejectedExecutionException v;
org.apache.activemq.transport.AbstractInactivityMonitor$4 v;
boolean v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inSend>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Send in progress. Skipping write check.");
return;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandSent>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean useKeepAlive>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("{} no message sent since last write check, sending a KeepAliveInfo", v);
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$4;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$4: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void execute(java.lang.Runnable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Async write check was rejected from the executor: ", v);
throw v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("{} message sent since last write check, resetting flag.", v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandSent>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
return;
catch java.util.concurrent.RejectedExecutionException from label to label with label;
}
final void readCheck()
{
java.util.concurrent.ThreadPoolExecutor v, v, v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
java.util.concurrent.RejectedExecutionException v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v;
org.apache.activemq.transport.AbstractInactivityMonitor$5 v;
boolean v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v, v;
org.apache.activemq.transport.Transport v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.Transport next>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: int getReceiveCounter()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicInteger lastReceiveCounter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndSet(int)>(v);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inReceive>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
if v == v goto label;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("A receive is in progress, skipping read check.");
return;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandReceived>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("No message received since last read check for {}. Throwing InactivityIOException.", v);
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = new org.apache.activemq.transport.AbstractInactivityMonitor$5;
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor$5: void <init>(org.apache.activemq.transport.AbstractInactivityMonitor)>(v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void execute(java.lang.Runnable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Async read check was rejected from the executor: ", v);
throw v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Message received since last read check, resetting flag: {}", v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandReceived>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
return;
catch java.util.concurrent.RejectedExecutionException from label to label with label;
}
protected abstract void processInboundWireFormatInfo(org.apache.activemq.command.WireFormatInfo) throws java.io.IOException;
protected abstract void processOutboundWireFormatInfo(org.apache.activemq.command.WireFormatInfo) throws java.io.IOException;
public void onCommand(java.lang.Object)
{
java.lang.Throwable v, v, v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
org.apache.activemq.transport.TransportListener v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v, v, v, v;
boolean v;
java.io.IOException v, v;
java.lang.Class v, v;
java.lang.Object v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: java.lang.Object;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandReceived>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inReceive>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v != class "Lorg/apache/activemq/command/KeepAliveInfo;" goto label;
v = virtualinvoke v.<org.apache.activemq.command.KeepAliveInfo: boolean isResponseRequired()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void lock()>();
label:
virtualinvoke v.<org.apache.activemq.command.KeepAliveInfo: void setResponseRequired(boolean)>(0);
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void oneway(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
throw v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v != class "Lorg/apache/activemq/command/WireFormatInfo;" goto label;
entermonitor v;
label:
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void processInboundWireFormatInfo(org.apache.activemq.command.WireFormatInfo)>(v);
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void onException(java.io.IOException)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onCommand(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inReceive>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inReceive>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
throw v;
label:
return;
catch java.io.IOException 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;
catch java.io.IOException 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 oneway(java.lang.Object) throws java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v, v, v;
java.lang.Object v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: java.lang.Object;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void lock()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inSend>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
label:
specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void doOnewaySend(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandSent>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inSend>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean commandSent>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean inSend>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void doOnewaySend(java.lang.Object) throws java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.transport.InactivityIOException v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.transport.Transport v, v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v, v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: java.lang.Object;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean failed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new org.apache.activemq.transport.InactivityIOException;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.Transport next>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.lang.String getRemoteAddress()>();
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[])>("Cannot send, channel has already failed: \u0001");
specialinvoke v.<org.apache.activemq.transport.InactivityIOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v != class "Lorg/apache/activemq/command/WireFormatInfo;" goto label;
entermonitor v;
label:
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void processOutboundWireFormatInfo(org.apache.activemq.command.WireFormatInfo)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.Transport next>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void oneway(java.lang.Object)>(v);
return;
catch java.lang.Throwable from label to label with label;
}
public void onException(java.io.IOException)
{
org.apache.activemq.transport.AbstractInactivityMonitor v;
org.apache.activemq.transport.TransportListener v;
java.util.concurrent.atomic.AtomicBoolean v;
java.io.IOException v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v;
boolean v, v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: java.io.IOException;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean failed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void stopMonitorThreads()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: boolean isHeldByCurrentThread()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.locks.ReentrantReadWriteLock sendLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onException(java.io.IOException)>(v);
label:
return;
}
public void setUseKeepAlive(boolean)
{
org.apache.activemq.transport.AbstractInactivityMonitor v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: boolean;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean useKeepAlive> = v;
return;
}
public long getConnectAttemptTimeout()
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long connectAttemptTimeout>;
return v;
}
public void setConnectAttemptTimeout(long)
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long connectAttemptTimeout> = v;
return;
}
public long getReadCheckTime()
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
return v;
}
public void setReadCheckTime(long)
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime> = v;
return;
}
public long getWriteCheckTime()
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime>;
return v;
}
public void setWriteCheckTime(long)
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime> = v;
return;
}
public long getInitialDelayTime()
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long initialDelayTime>;
return v;
}
public void setInitialDelayTime(long)
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long initialDelayTime> = v;
return;
}
public boolean isKeepAliveResponseRequired()
{
org.apache.activemq.transport.AbstractInactivityMonitor v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean keepAliveResponseRequired>;
return v;
}
public void setKeepAliveResponseRequired(boolean)
{
org.apache.activemq.transport.AbstractInactivityMonitor v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: boolean;
v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean keepAliveResponseRequired> = v;
return;
}
public boolean isMonitorStarted()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
boolean v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
return v;
}
protected abstract boolean configuredOk() throws java.io.IOException;
public synchronized void startConnectCheckTask()
{
long v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: long getConnectAttemptTimeout()>();
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void startConnectCheckTask(long)>(v);
return;
}
public synchronized void startConnectCheckTask(long)
{
java.lang.Throwable v;
java.util.concurrent.ThreadPoolExecutor v, v, v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.Timer v, v, v;
long v;
java.lang.Runnable v;
byte v;
int v, v, v;
boolean v;
org.apache.activemq.thread.SchedulerTimerTask v, v, v;
org.slf4j.Logger v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v := @parameter: long;
v = v cmp 0L;
if v > 0 goto label;
return;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Starting connection check task for: {}", v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: long connectAttemptTimeout> = v;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
if v != null goto label;
v = new org.apache.activemq.thread.SchedulerTimerTask;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable connectChecker>;
specialinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: void <init>(java.lang.Runnable)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask> = v;
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
if v == null goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v == 0 goto label;
label:
v = specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor createExecutor()>();
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
if v != null goto label;
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>(java.lang.String,boolean)>("ActiveMQ InactivityMonitor ReadCheckTimer", 1);
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER> = v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
v = v + 1;
<org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER> = v;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
virtualinvoke v.<java.util.Timer: void schedule(java.util.TimerTask,long)>(v, v);
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
goto label;
label:
v := @caughtexception;
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public synchronized void stopConnectCheckTask()
{
java.lang.Throwable v;
org.apache.activemq.thread.SchedulerTimerTask v, v;
org.slf4j.Logger v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.Timer v;
int v, v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
if v == null goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Stopping connection check task for: {}", v);
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
virtualinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: boolean cancel()>();
v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask> = null;
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
virtualinvoke v.<java.util.Timer: int purge()>();
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
v = v - 1;
<org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER> = v;
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
goto label;
label:
v := @caughtexception;
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected synchronized void startMonitorThreads() throws java.io.IOException
{
java.util.Timer v, v, v, v, v, v;
java.lang.Runnable v, v;
byte v, v, v, v, v, v;
boolean v, v, v;
org.apache.activemq.thread.SchedulerTimerTask v, v, v, v;
java.lang.Throwable v;
java.util.concurrent.ThreadPoolExecutor v, v, v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v, v;
long v, v, v, v, v, v, v, v, v, v;
int v, v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
return;
label:
v = virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: boolean configuredOk()>();
if v != 0 goto label;
return;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
v = v cmp 0L;
if v <= 0 goto label;
v = new org.apache.activemq.thread.SchedulerTimerTask;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable readChecker>;
specialinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: void <init>(java.lang.Runnable)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask readCheckerTask> = v;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime>;
v = v cmp 0L;
if v <= 0 goto label;
v = new org.apache.activemq.thread.SchedulerTimerTask;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.lang.Runnable writeChecker>;
specialinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: void <init>(java.lang.Runnable)>(v);
v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask writeCheckerTask> = v;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime>;
v = v cmp 0L;
if v > 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
v = v cmp 0L;
if v <= 0 goto label;
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
if v == null goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
if v == 0 goto label;
label:
v = specialinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor createExecutor()>();
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
if v != null goto label;
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>(java.lang.String,boolean)>("ActiveMQ InactivityMonitor ReadCheckTimer", 1);
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER> = v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER>;
if v != null goto label;
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>(java.lang.String,boolean)>("ActiveMQ InactivityMonitor WriteCheckTimer", 1);
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER> = v;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
v = v + 1;
<org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER> = v;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
v = v cmp 0L;
if v <= 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask readCheckerTask>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long initialDelayTime>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long readCheckTime>;
virtualinvoke v.<java.util.Timer: void schedule(java.util.TimerTask,long,long)>(v, v, v);
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime>;
v = v cmp 0L;
if v <= 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask writeCheckerTask>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long initialDelayTime>;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: long writeCheckTime>;
virtualinvoke v.<java.util.Timer: void schedule(java.util.TimerTask,long,long)>(v, v, v);
label:
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
goto label;
label:
v := @caughtexception;
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected synchronized void stopMonitorThreads()
{
java.lang.Throwable v, v;
java.util.concurrent.ThreadPoolExecutor v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.Timer v, v, v, v;
long v;
int v, v, v;
boolean v;
org.apache.activemq.thread.SchedulerTimerTask v, v, v, v;
java.util.concurrent.TimeUnit v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
virtualinvoke v.<org.apache.activemq.transport.AbstractInactivityMonitor: void stopConnectCheckTask()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean monitorStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(1, 0);
if v == 0 goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask readCheckerTask>;
if v == null goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask readCheckerTask>;
virtualinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: boolean cancel()>();
label:
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask writeCheckerTask>;
if v == null goto label;
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask writeCheckerTask>;
virtualinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: boolean cancel()>();
label:
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER>;
virtualinvoke v.<java.util.Timer: int purge()>();
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
virtualinvoke v.<java.util.Timer: int purge()>();
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
v = v - 1;
<org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER> = v;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: int CHECKER_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER>;
virtualinvoke v.<java.util.Timer: void cancel()>();
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER>;
virtualinvoke v.<java.util.Timer: void cancel()>();
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer WRITE_CHECK_TIMER> = null;
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.Timer READ_CHECK_TIMER> = null;
label:
v = <org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMillis(long)>(10L);
staticinvoke <org.apache.activemq.util.ThreadPoolUtils: void shutdownGraceful(java.util.concurrent.ExecutorService,long)>(v, v);
label:
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = null;
goto label;
label:
v := @caughtexception;
<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = null;
throw v;
label:
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
goto label;
label:
v := @caughtexception;
exitmonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.util.concurrent.ThreadPoolExecutor createExecutor()
{
java.util.concurrent.TimeUnit v;
java.util.concurrent.SynchronousQueue v;
java.util.concurrent.ThreadPoolExecutor v;
org.apache.activemq.transport.AbstractInactivityMonitor v;
int v;
java.util.concurrent.ThreadFactory v;
v := @this: org.apache.activemq.transport.AbstractInactivityMonitor;
v = new java.util.concurrent.ThreadPoolExecutor;
v = staticinvoke <org.apache.activemq.transport.AbstractInactivityMonitor: int getDefaultKeepAliveTime()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = new java.util.concurrent.SynchronousQueue;
specialinvoke v.<java.util.concurrent.SynchronousQueue: void <init>()>();
v = v.<org.apache.activemq.transport.AbstractInactivityMonitor: java.util.concurrent.ThreadFactory factory>;
specialinvoke v.<java.util.concurrent.ThreadPoolExecutor: void <init>(int,int,long,java.util.concurrent.TimeUnit,java.util.concurrent.BlockingQueue,java.util.concurrent.ThreadFactory)>(0, 2147483647, v, v, v, v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void allowCoreThreadTimeOut(boolean)>(1);
return v;
}
private static int getDefaultKeepAliveTime()
{
int v;
java.lang.Integer v;
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("org.apache.activemq.transport.AbstractInactivityMonitor.keepAliveTime", 30);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;");
<org.apache.activemq.transport.AbstractInactivityMonitor: org.slf4j.Logger LOG> = v;
return;
}
}