public class org.apache.activemq.transport.amqp.AmqpInactivityMonitor extends org.apache.activemq.transport.TransportFilter
{
private static final org.slf4j.Logger LOG;
private static java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS;
private static int CONNECTION_CHECK_TASK_COUNTER;
private static java.util.Timer CONNECTION_CHECK_TASK_TIMER;
private static int KEEPALIVE_TASK_COUNTER;
private static java.util.Timer KEEPALIVE_TASK_TIMER;
private final java.util.concurrent.atomic.AtomicBoolean failed;
private org.apache.activemq.transport.amqp.AmqpTransport amqpTransport;
private long connectionTimeout;
private org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask;
private final java.lang.Runnable connectChecker;
private org.apache.activemq.thread.SchedulerTimerTask keepAliveTask;
private final java.lang.Runnable keepAlive;
private final java.util.concurrent.ThreadFactory factory;
public void <init>(org.apache.activemq.transport.Transport, org.apache.activemq.wireformat.WireFormat)
{
org.apache.activemq.wireformat.WireFormat v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor$3 v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor$2 v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor$1 v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
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.amqp.AmqpInactivityMonitor: java.util.concurrent.atomic.AtomicBoolean failed> = v;
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: long connectionTimeout> = 30000L;
v = new org.apache.activemq.transport.amqp.AmqpInactivityMonitor$1;
specialinvoke v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor$1: void <init>(org.apache.activemq.transport.amqp.AmqpInactivityMonitor)>(v);
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.lang.Runnable connectChecker> = v;
v = new org.apache.activemq.transport.amqp.AmqpInactivityMonitor$2;
specialinvoke v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor$2: void <init>(org.apache.activemq.transport.amqp.AmqpInactivityMonitor)>(v);
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.lang.Runnable keepAlive> = v;
v = new org.apache.activemq.transport.amqp.AmqpInactivityMonitor$3;
specialinvoke v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor$3: void <init>(org.apache.activemq.transport.amqp.AmqpInactivityMonitor)>(v);
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadFactory factory> = v;
return;
}
public void start() throws java.lang.Exception
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.Transport next>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
return;
}
public void stop() throws java.lang.Exception
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
virtualinvoke v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: void stopConnectionTimeoutChecker()>();
virtualinvoke v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: void stopKeepAliveTask()>();
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.Transport next>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void stop()>();
return;
}
public void onException(java.io.IOException)
{
org.apache.activemq.transport.TransportListener v;
java.util.concurrent.atomic.AtomicBoolean v;
java.io.IOException v;
org.apache.activemq.transport.amqp.AmqpTransport v, v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
boolean v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v := @parameter: java.io.IOException;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: 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.amqp.AmqpInactivityMonitor: void stopConnectionTimeoutChecker()>();
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.amqp.AmqpTransport amqpTransport>;
if v == null goto label;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.amqp.AmqpTransport amqpTransport>;
interfaceinvoke v.<org.apache.activemq.transport.amqp.AmqpTransport: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onException(java.io.IOException)>(v);
label:
return;
}
public void setAmqpTransport(org.apache.activemq.transport.amqp.AmqpTransport)
{
org.apache.activemq.transport.amqp.AmqpTransport v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v := @parameter: org.apache.activemq.transport.amqp.AmqpTransport;
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.amqp.AmqpTransport amqpTransport> = v;
return;
}
public org.apache.activemq.transport.amqp.AmqpTransport getAmqpTransport()
{
org.apache.activemq.transport.amqp.AmqpTransport v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.transport.amqp.AmqpTransport amqpTransport>;
return v;
}
public synchronized void startConnectionTimeoutChecker(long)
{
java.lang.Throwable v;
java.util.concurrent.ThreadPoolExecutor v, v, v;
java.util.Timer v, v;
long v, v;
java.lang.Runnable v;
byte v;
int v, v, v;
boolean v;
org.apache.activemq.thread.SchedulerTimerTask v, v, v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v := @parameter: long;
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: long connectionTimeout> = v;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
if v != null goto label;
v = new org.apache.activemq.thread.SchedulerTimerTask;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.lang.Runnable connectChecker>;
specialinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: void <init>(java.lang.Runnable)>(v);
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask> = v;
v = staticinvoke <java.lang.Math: long min(long,long)>(v, 1000L);
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
if v == null goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: 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.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor createExecutor()>();
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = v;
label:
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>(java.lang.String,boolean)>("AMQP InactivityMonitor State Check", 1);
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer CONNECTION_CHECK_TASK_TIMER> = v;
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER>;
v = v + 1;
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER> = v;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer CONNECTION_CHECK_TASK_TIMER>;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
virtualinvoke v.<java.util.Timer: void schedule(java.util.TimerTask,long,long)>(v, 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 startKeepAliveTask(long)
{
java.lang.Throwable v;
java.util.concurrent.ThreadPoolExecutor v, v, v;
java.util.Timer 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.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v := @parameter: long;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask>;
if v != null goto label;
v = new org.apache.activemq.thread.SchedulerTimerTask;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.lang.Runnable keepAlive>;
specialinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: void <init>(java.lang.Runnable)>(v);
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask> = v;
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS>;
if v == null goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: 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.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor createExecutor()>();
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.concurrent.ThreadPoolExecutor ASYNC_TASKS> = v;
label:
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>(java.lang.String,boolean)>("AMQP InactivityMonitor Idle Update", 1);
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer KEEPALIVE_TASK_TIMER> = v;
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER>;
v = v + 1;
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER> = v;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer KEEPALIVE_TASK_TIMER>;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask>;
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 stopConnectionTimeoutChecker()
{
java.lang.Throwable v;
org.apache.activemq.thread.SchedulerTimerTask v, v;
java.util.Timer v, v;
int v, v, v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
if v == null goto label;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask>;
virtualinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: boolean cancel()>();
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask connectCheckerTask> = null;
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer CONNECTION_CHECK_TASK_TIMER>;
virtualinvoke v.<java.util.Timer: int purge()>();
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER>;
v = v - 1;
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER> = v;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int CONNECTION_CHECK_TASK_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer CONNECTION_CHECK_TASK_TIMER>;
virtualinvoke v.<java.util.Timer: void cancel()>();
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer CONNECTION_CHECK_TASK_TIMER> = null;
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;
}
public synchronized void stopKeepAliveTask()
{
java.lang.Throwable v;
org.apache.activemq.thread.SchedulerTimerTask v, v;
java.util.Timer v, v;
int v, v, v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask>;
if v == null goto label;
v = v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask>;
virtualinvoke v.<org.apache.activemq.thread.SchedulerTimerTask: boolean cancel()>();
v.<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.apache.activemq.thread.SchedulerTimerTask keepAliveTask> = null;
entermonitor class "Lorg/apache/activemq/transport/AbstractInactivityMonitor;";
label:
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer KEEPALIVE_TASK_TIMER>;
virtualinvoke v.<java.util.Timer: int purge()>();
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER>;
v = v - 1;
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER> = v;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: int KEEPALIVE_TASK_COUNTER>;
if v != 0 goto label;
v = <org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer KEEPALIVE_TASK_TIMER>;
virtualinvoke v.<java.util.Timer: void cancel()>();
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: java.util.Timer KEEPALIVE_TASK_TIMER> = null;
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;
}
private java.util.concurrent.ThreadPoolExecutor createExecutor()
{
java.util.concurrent.TimeUnit v;
java.util.concurrent.SynchronousQueue v;
java.util.concurrent.ThreadPoolExecutor v;
java.util.concurrent.ThreadFactory v;
org.apache.activemq.transport.amqp.AmqpInactivityMonitor v;
v := @this: org.apache.activemq.transport.amqp.AmqpInactivityMonitor;
v = new java.util.concurrent.ThreadPoolExecutor;
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.amqp.AmqpInactivityMonitor: 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, 90L, v, v, v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void allowCoreThreadTimeOut(boolean)>(1);
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/amqp/AmqpInactivityMonitor;");
<org.apache.activemq.transport.amqp.AmqpInactivityMonitor: org.slf4j.Logger LOG> = v;
return;
}
}