public class org.apache.activemq.transport.failover.FailoverTransport extends java.lang.Object implements org.apache.activemq.transport.CompositeTransport
{
private static final org.slf4j.Logger LOG;
private static final int DEFAULT_INITIAL_RECONNECT_DELAY;
private static final int INFINITE;
private org.apache.activemq.transport.TransportListener transportListener;
private volatile boolean disposed;
private final java.util.concurrent.CopyOnWriteArrayList uris;
private final java.util.concurrent.CopyOnWriteArrayList updated;
private final java.lang.Object reconnectMutex;
private final java.lang.Object backupMutex;
private final java.lang.Object sleepMutex;
private final java.lang.Object listenerMutex;
private final org.apache.activemq.state.ConnectionStateTracker stateTracker;
private final java.util.Map requestMap;
private java.net.URI connectedTransportURI;
private java.net.URI failedConnectTransportURI;
private final java.util.concurrent.atomic.AtomicReference connectedTransport;
private final org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory;
private final org.apache.activemq.thread.TaskRunner reconnectTask;
private volatile boolean started;
private long initialReconnectDelay;
private long maxReconnectDelay;
private double backOffMultiplier;
private long timeout;
private boolean useExponentialBackOff;
private boolean randomize;
private int maxReconnectAttempts;
private int startupMaxReconnectAttempts;
private int connectFailures;
private int warnAfterReconnectAttempts;
private long reconnectDelay;
private java.lang.Exception connectionFailure;
private boolean firstConnection;
private boolean backup;
private final java.util.List backups;
private int backupPoolSize;
private boolean trackMessages;
private boolean trackTransactionProducers;
private int maxCacheSize;
private final org.apache.activemq.transport.TransportListener disposedListener;
private boolean updateURIsSupported;
private boolean reconnectSupported;
private org.apache.activemq.broker.SslContext brokerSslContext;
private java.lang.String updateURIsURL;
private boolean rebalanceUpdateURIs;
private boolean doRebalance;
private boolean doReconnect;
private boolean connectedToPriority;
private boolean priorityBackup;
private final java.util.ArrayList priorityList;
private boolean priorityBackupAvailable;
private java.lang.String nestedExtraQueryOptions;
private volatile boolean shuttingDown;
public void <init>()
{
java.util.concurrent.atomic.AtomicReference v;
java.util.ArrayList v;
java.util.LinkedHashMap v;
org.apache.activemq.broker.SslContext v;
int v, v, v;
java.lang.String v;
org.apache.activemq.state.ConnectionStateTracker v, v;
org.apache.activemq.transport.failover.FailoverTransport$2 v;
org.apache.activemq.transport.failover.FailoverTransport$1 v;
org.apache.activemq.thread.TaskRunner v;
org.apache.activemq.thread.TaskRunnerFactory v, v, v;
java.lang.Object v, v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.CopyOnWriteArrayList v, v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.CopyOnWriteArrayList;
specialinvoke v.<java.util.concurrent.CopyOnWriteArrayList: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris> = v;
v = new java.util.concurrent.CopyOnWriteArrayList;
specialinvoke v.<java.util.concurrent.CopyOnWriteArrayList: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object backupMutex> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object sleepMutex> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex> = v;
v = new org.apache.activemq.state.ConnectionStateTracker;
specialinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker> = v;
v = new java.util.LinkedHashMap;
specialinvoke v.<java.util.LinkedHashMap: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay> = 10L;
v.<org.apache.activemq.transport.failover.FailoverTransport: long maxReconnectDelay> = 30000L;
v.<org.apache.activemq.transport.failover.FailoverTransport: double backOffMultiplier> = 2.0;
v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout> = -1L;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean useExponentialBackOff> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean randomize> = 1;
v = (int) -1;
v.<org.apache.activemq.transport.failover.FailoverTransport: int maxReconnectAttempts> = v;
v = (int) -1;
v.<org.apache.activemq.transport.failover.FailoverTransport: int startupMaxReconnectAttempts> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: int warnAfterReconnectAttempts> = 10;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = 10L;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean backup> = 0;
v = new java.util.concurrent.CopyOnWriteArrayList;
specialinvoke v.<java.util.concurrent.CopyOnWriteArrayList: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: int backupPoolSize> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackMessages> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackTransactionProducers> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: int maxCacheSize> = 131072;
v = new org.apache.activemq.transport.failover.FailoverTransport$1;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport$1: void <init>(org.apache.activemq.transport.failover.FailoverTransport)>(v);
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener disposedListener> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean updateURIsSupported> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean reconnectSupported> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String updateURIsURL> = null;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean rebalanceUpdateURIs> = 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doReconnect> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup> = 0;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.ArrayList priorityList> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean shuttingDown> = 0;
v = staticinvoke <org.apache.activemq.broker.SslContext: org.apache.activemq.broker.SslContext getCurrentSslContext()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.broker.SslContext brokerSslContext> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void setTrackTransactions(boolean)>(1);
v = new org.apache.activemq.thread.TaskRunnerFactory;
specialinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void <init>()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory>;
virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void init()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory>;
v = new org.apache.activemq.transport.failover.FailoverTransport$2;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport$2: void <init>(org.apache.activemq.transport.failover.FailoverTransport)>(v);
v = staticinvoke <java.lang.System: int identityHashCode(java.lang.Object)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("ActiveMQ Failover Worker: \u0001");
v = virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: org.apache.activemq.thread.TaskRunner createTaskRunner(org.apache.activemq.thread.Task,java.lang.String)>(v, v);
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask> = v;
return;
}
private void processCommand(java.lang.Object)
{
java.lang.Throwable v;
org.apache.activemq.transport.TransportListener v, v;
java.lang.Integer v;
org.apache.activemq.command.ConsumerId v;
java.util.Map v, v;
int v;
boolean v, v, v, v;
org.apache.activemq.command.Command v;
org.apache.activemq.state.ConnectionStateTracker v;
java.lang.Class v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Object;
if v != null goto label;
return;
label:
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isResponse()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
v = virtualinvoke v.<org.apache.activemq.command.Response: int getCorrelationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v != class "Lorg/apache/activemq/state/Tracked;" goto label;
virtualinvoke v.<org.apache.activemq.state.Tracked: void onResponses(org.apache.activemq.command.Command)>(v);
label:
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isConnectionControl()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void handleConnectionControl(org.apache.activemq.command.ConnectionControl)>(v);
goto label;
label:
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isConsumerControl()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerControl: boolean isClose()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerControl: org.apache.activemq.command.ConsumerId getConsumerId()>();
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: org.apache.activemq.command.Response processRemoveConsumer(org.apache.activemq.command.ConsumerId,long)>(v, -2L);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onCommand(java.lang.Object)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private org.apache.activemq.transport.TransportListener createTransportListener(org.apache.activemq.transport.Transport)
{
org.apache.activemq.transport.failover.FailoverTransport$3 v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.transport.Transport;
v = new org.apache.activemq.transport.failover.FailoverTransport$3;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport$3: void <init>(org.apache.activemq.transport.failover.FailoverTransport,org.apache.activemq.transport.Transport)>(v, v);
return v;
}
public final void disposeTransport(org.apache.activemq.transport.Transport)
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.failover.FailoverTransport v;
org.apache.activemq.transport.TransportListener v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.transport.Transport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener disposedListener>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
staticinvoke <org.apache.activemq.util.ServiceSupport: void dispose(org.apache.activemq.Service)>(v);
return;
}
public final void handleTransportFailure(java.io.IOException) throws java.lang.InterruptedException
{
java.io.IOException v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.io.IOException;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.Transport getConnectedTransport()>();
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void handleTransportFailure(org.apache.activemq.transport.Transport,java.io.IOException)>(v, v);
return;
}
public final void handleTransportFailure(org.apache.activemq.transport.Transport, java.io.IOException) throws java.lang.InterruptedException
{
java.lang.Throwable v;
java.lang.Object[] v;
org.apache.activemq.transport.TransportListener v, v;
java.util.concurrent.atomic.AtomicReference v, v;
java.lang.String v, v;
java.net.URI v, v;
boolean v, v, v, v, v, v;
org.slf4j.Logger v, v, v;
java.io.IOException v;
org.apache.activemq.transport.Transport v, v;
org.apache.activemq.thread.TaskRunner v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.transport.Transport;
v := @parameter: java.io.IOException;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean shuttingDown>;
if v == 0 goto label;
return;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.transport.failover.FailoverTransport,java.io.IOException)>(v, 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[])>("\u handleTransportFailure: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = null;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, null);
if v == 0 goto label;
v = v;
if v == null goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void disposeTransport(org.apache.activemq.transport.Transport)>(v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != null goto label;
v = 0;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean canReconnect()>();
if v == 0 goto label;
v = 1;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v[0] = v;
if v == 0 goto label;
v = ",";
goto label;
label:
v = ", not";
label:
v[1] = v;
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("Transport ({}) failed{} attempting to automatically reconnect", v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI> = null;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority> = 0;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void transportInterupted()>();
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void wakeup()>();
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isDisposed()>();
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void propagateFailureToExceptionListener(java.lang.Exception)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private boolean canReconnect()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started>;
if v == 0 goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: int calculateReconnectAttemptLimit()>();
if 0 == v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public final void handleConnectionControl(org.apache.activemq.command.ConnectionControl)
{
org.apache.activemq.command.ConnectionControl v;
int v;
java.lang.String v, v, v, v, v;
java.net.URI v;
boolean v, v, v;
org.slf4j.Logger v, v, v, v;
java.lang.Exception v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.command.ConnectionControl;
v = virtualinvoke v.<org.apache.activemq.command.ConnectionControl: java.lang.String getReconnectTo()>();
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Received ConnectionControl: {}", v);
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
label:
v = new java.net.URI;
specialinvoke v.<java.net.URI: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isReconnectSupported()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void reconnect(java.net.URI)>(v);
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.net.URI)>(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[])>("Reconnected to: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
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[])>("Failed to handle ConnectionControl reconnect to \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = virtualinvoke v.<org.apache.activemq.command.ConnectionControl: boolean isRebalanceConnection()>();
v = virtualinvoke v.<org.apache.activemq.command.ConnectionControl: java.lang.String getConnectedBrokers()>();
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void processNewTransports(boolean,java.lang.String)>(v, v);
return;
catch java.lang.Exception from label to label with label;
}
private final void processNewTransports(boolean, java.lang.String)
{
java.lang.Object[] v;
java.util.ArrayList v;
java.net.URI[] v;
java.util.StringTokenizer v;
int v, v;
java.lang.String v, v, v, v, v;
java.net.URI v;
boolean v, v, v, v;
org.slf4j.Logger v, v;
java.io.IOException v;
java.lang.Exception v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isUpdateURIsSupported()>();
if v == 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new java.util.StringTokenizer;
specialinvoke v.<java.util.StringTokenizer: void <init>(java.lang.String,java.lang.String)>(v, ",");
label:
v = virtualinvoke v.<java.util.StringTokenizer: boolean hasMoreTokens()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.StringTokenizer: java.lang.String nextToken()>();
label:
v = new java.net.URI;
specialinvoke v.<java.net.URI: void <init>(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
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[])>("Failed to parse broker address: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = newarray (java.net.URI)[v];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void updateURIs(boolean,java.net.URI[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
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[])>("Failed to update transport URI\'s from: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Exception from label to label with label;
catch java.io.IOException from label to label with label;
}
public void start() throws java.lang.Exception
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicReference v, v;
int v;
boolean v, v, v;
org.slf4j.Logger v;
org.apache.activemq.state.ConnectionStateTracker v, v, v, v;
java.lang.Object v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Started {}", v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started>;
if v == 0 goto label;
exitmonitor v;
label:
return;
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started> = 1;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: int getMaxCacheSize()>();
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void setMaxCacheSize(int)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isTrackMessages()>();
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void setTrackMessages(boolean)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isTrackTransactionProducers()>();
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void setTrackTransactionProducers(boolean)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void restore(org.apache.activemq.transport.Transport)>(v);
goto label;
label:
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void reconnect(boolean)>(0);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void stop() throws java.lang.Exception
{
org.apache.activemq.transport.TransportListener v;
boolean v, v, v, v;
org.apache.activemq.transport.Transport v;
java.lang.Exception v;
java.util.List v, v, v;
org.apache.activemq.thread.TaskRunnerFactory v, v, v;
java.lang.Throwable v, v, v, v;
java.util.concurrent.atomic.AtomicReference v, v;
java.util.ArrayList v;
int v;
org.slf4j.Logger v, v, v;
java.util.Iterator v, v;
org.apache.activemq.thread.TaskRunner v, v, v;
java.lang.Object v, v, v, v, v, v, v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = new java.util.ArrayList;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Stopped {}", v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started>;
if v != 0 goto label;
exitmonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void shutdown()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory>;
virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void shutdownNow()>();
return;
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed> = 1;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object getAndSet(java.lang.Object)>(null);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object sleepMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object sleepMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void shutdown()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory>;
virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void shutdownNow()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void shutdown()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunnerFactory reconnectTaskFactory>;
virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void shutdownNow()>();
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object backupMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: void setDisposed(boolean)>(1);
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: org.apache.activemq.transport.Transport getTransport()>();
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener disposedListener>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
interfaceinvoke v.<java.util.List: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Stopped backup: {}", v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void disposeTransport(org.apache.activemq.transport.Transport)>(v);
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
if v == null goto label;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void stop()>();
label:
return;
catch java.lang.Throwable 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.lang.Throwable 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.lang.Exception from label to label with label;
}
public long getInitialReconnectDelay()
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay>;
return v;
}
public void setInitialReconnectDelay(long)
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: long;
v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay> = v;
return;
}
public long getMaxReconnectDelay()
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long maxReconnectDelay>;
return v;
}
public void setMaxReconnectDelay(long)
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: long;
v.<org.apache.activemq.transport.failover.FailoverTransport: long maxReconnectDelay> = v;
return;
}
public long getReconnectDelay()
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
return v;
}
public void setReconnectDelay(long)
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: long;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = v;
return;
}
public double getReconnectDelayExponent()
{
org.apache.activemq.transport.failover.FailoverTransport v;
double v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: double backOffMultiplier>;
return v;
}
public void setReconnectDelayExponent(double)
{
org.apache.activemq.transport.failover.FailoverTransport v;
double v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: double;
v.<org.apache.activemq.transport.failover.FailoverTransport: double backOffMultiplier> = v;
return;
}
public org.apache.activemq.transport.Transport getConnectedTransport()
{
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
return v;
}
public java.net.URI getConnectedTransportURI()
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
return v;
}
public int getMaxReconnectAttempts()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int maxReconnectAttempts>;
return v;
}
public void setMaxReconnectAttempts(int)
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: int;
v.<org.apache.activemq.transport.failover.FailoverTransport: int maxReconnectAttempts> = v;
return;
}
public int getStartupMaxReconnectAttempts()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int startupMaxReconnectAttempts>;
return v;
}
public void setStartupMaxReconnectAttempts(int)
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: int;
v.<org.apache.activemq.transport.failover.FailoverTransport: int startupMaxReconnectAttempts> = v;
return;
}
public long getTimeout()
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout>;
return v;
}
public void setTimeout(long)
{
long v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: long;
v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout> = v;
return;
}
public boolean isRandomize()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean randomize>;
return v;
}
public void setRandomize(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean randomize> = v;
return;
}
public boolean isBackup()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean backup>;
return v;
}
public void setBackup(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean backup> = v;
return;
}
public int getBackupPoolSize()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int backupPoolSize>;
return v;
}
public void setBackupPoolSize(int)
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: int;
v.<org.apache.activemq.transport.failover.FailoverTransport: int backupPoolSize> = v;
return;
}
public int getCurrentBackups()
{
int v;
java.util.List v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: int size()>();
return v;
}
public boolean isTrackMessages()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackMessages>;
return v;
}
public void setTrackMessages(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackMessages> = v;
return;
}
public boolean isTrackTransactionProducers()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackTransactionProducers>;
return v;
}
public void setTrackTransactionProducers(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean trackTransactionProducers> = v;
return;
}
public int getMaxCacheSize()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int maxCacheSize>;
return v;
}
public void setMaxCacheSize(int)
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: int;
v.<org.apache.activemq.transport.failover.FailoverTransport: int maxCacheSize> = v;
return;
}
public boolean isPriorityBackup()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
return v;
}
public void setPriorityBackup(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup> = v;
return;
}
public void setPriorityURIs(java.lang.String)
{
org.slf4j.Logger v;
java.lang.Exception v;
java.util.ArrayList v;
java.util.StringTokenizer v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v, v, v;
java.net.URI v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.String;
v = new java.util.StringTokenizer;
specialinvoke v.<java.util.StringTokenizer: void <init>(java.lang.String,java.lang.String)>(v, ",");
label:
v = virtualinvoke v.<java.util.StringTokenizer: boolean hasMoreTokens()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.StringTokenizer: java.lang.String nextToken()>();
label:
v = new java.net.URI;
specialinvoke v.<java.net.URI: void <init>(java.lang.String)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.ArrayList priorityList>;
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
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[])>("Failed to parse broker address: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
return;
catch java.lang.Exception from label to label with label;
}
public void oneway(java.lang.Object) throws java.io.IOException
{
java.lang.Integer v, v, v, v, v;
org.apache.activemq.command.ConsumerId v;
byte v, v, v;
java.lang.Long v;
java.lang.Thread v, v, v;
java.util.Map v, v, v, v;
java.lang.Exception v, v, v;
org.apache.activemq.state.Tracked v;
java.lang.Throwable v, v;
long v, v, v, v, v, v, v, v;
java.io.InterruptedIOException v;
java.lang.String v, v;
java.io.IOException v, v, v, v, v, v, v, v;
org.apache.activemq.command.MessageDispatch v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.state.ConnectionStateTracker v, v, v;
org.apache.activemq.command.ActiveMQDestination v;
org.apache.activemq.command.Response v;
java.util.concurrent.atomic.AtomicReference v, v, v;
org.apache.activemq.MaxFrameSizeExceededException v;
int v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v, v, v, v;
org.apache.activemq.command.Command v;
java.lang.InterruptedException v, v;
java.lang.Object v, v, v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Object;
v = null;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != null goto label;
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isShutdownInfo()>();
if v == 0 goto label;
exitmonitor v;
label:
return;
label:
v = v instanceof org.apache.activemq.command.RemoveInfo;
if v != 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isMessageAck()>();
if v == 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: org.apache.activemq.state.Tracked track(org.apache.activemq.command.Command)>(v);
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isResponseRequired()>();
if v == 0 goto label;
v = new org.apache.activemq.command.Response;
specialinvoke v.<org.apache.activemq.command.Response: void <init>()>();
v = interfaceinvoke v.<org.apache.activemq.command.Command: int getCommandId()>();
virtualinvoke v.<org.apache.activemq.command.Response: void setCorrelationId(int)>(v);
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void processCommand(java.lang.Object)>(v);
label:
exitmonitor v;
label:
return;
label:
v = v instanceof org.apache.activemq.command.MessagePull;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: long getTimeout()>();
v = v cmp 0L;
if v == 0 goto label;
v = new org.apache.activemq.command.MessageDispatch;
specialinvoke v.<org.apache.activemq.command.MessageDispatch: void <init>()>();
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: org.apache.activemq.command.ConsumerId getConsumerId()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setConsumerId(org.apache.activemq.command.ConsumerId)>(v);
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: org.apache.activemq.command.ActiveMQDestination getDestination()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void processCommand(java.lang.Object)>(v);
label:
exitmonitor v;
label:
return;
label:
v = 0;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = 0;
label:
if v != null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
if v != null goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: boolean isInterrupted()>();
if v != 0 goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean willReconnect()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Waiting for transport to reconnect..: {}", v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isMessage()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout>;
v = v cmp 0L;
if v <= 0 goto label;
v = v - v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout>;
v = v cmp v;
if v <= 0 goto label;
v = 1;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Failover timed out after {} ms", v);
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
virtualinvoke v.<java.lang.Object: void wait(long)>(100L);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Interupted:", v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
goto label;
label:
if v != null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Transport disposed.");
v = v;
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
goto label;
label:
if v != 1 goto label;
v = new java.io.IOException;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long timeout>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>("Failover timeout of \u ms reached.");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
v = v;
goto label;
label:
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean willReconnect()>();
if v != 0 goto label;
v = new java.io.IOException;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int maxReconnectAttempts>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("Reconnect attempts of \u exceeded");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
v = v;
goto label;
label:
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Unexpected failure.");
v = v;
label:
goto label;
label:
v = null;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
v = virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: org.apache.activemq.state.Tracked track(org.apache.activemq.command.Command)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Cannot track the command {} {}", v, v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
entermonitor v;
label:
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.state.Tracked: boolean isWaitingForResponse()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
v = interfaceinvoke v.<org.apache.activemq.command.Command: int getCommandId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
if v != null goto label;
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isResponseRequired()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
v = interfaceinvoke v.<org.apache.activemq.command.Command: int getCommandId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
interfaceinvoke v.<org.apache.activemq.transport.Transport: void oneway(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void trackBack(org.apache.activemq.command.Command)>(v);
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isShutdownInfo()>();
if v == 0 goto label;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean shuttingDown> = 1;
label:
goto label;
label:
v := @caughtexception;
if v != null goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean canReconnect()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.command.Command: boolean isResponseRequired()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
v = interfaceinvoke v.<org.apache.activemq.command.Command: int getCommandId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
label:
throw v;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Send oneway attempt: {} failed for command: {}", v, v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void handleTransportFailure(java.io.IOException)>(v);
label:
exitmonitor v;
label:
return;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("MaxFrameSizeExceededException for command: {}", v);
throw v;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Send oneway attempt: {} failed for command: {}", v, v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void handleTransportFailure(java.io.IOException)>(v);
v = v + 1;
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = new java.io.InterruptedIOException;
specialinvoke v.<java.io.InterruptedIOException: void <init>()>();
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
if v == null goto label;
v = v instanceof java.io.IOException;
if v == 0 goto label;
throw v;
label:
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
throw v;
label:
return;
catch java.lang.InterruptedException 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.io.IOException from label to label with label;
catch org.apache.activemq.MaxFrameSizeExceededException from label to label with label;
catch org.apache.activemq.MaxFrameSizeExceededException from label to label with label;
catch java.io.IOException 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;
catch java.lang.Throwable 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.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
private boolean willReconnect()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection>;
if v != 0 goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: int calculateReconnectAttemptLimit()>();
if 0 == v goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.apache.activemq.transport.FutureResponse asyncRequest(java.lang.Object, org.apache.activemq.transport.ResponseCallback) throws java.io.IOException
{
org.apache.activemq.transport.ResponseCallback v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.AssertionError v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Object;
v := @parameter: org.apache.activemq.transport.ResponseCallback;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>("Unsupported Method");
throw v;
}
public java.lang.Object request(java.lang.Object) throws java.io.IOException
{
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.AssertionError v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Object;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>("Unsupported Method");
throw v;
}
public java.lang.Object request(java.lang.Object, int) throws java.io.IOException
{
int v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.AssertionError v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Object;
v := @parameter: int;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>("Unsupported Method");
throw v;
}
public void add(boolean, java.net.URI[])
{
java.net.URI[] v;
int v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
boolean v, v, v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v := @parameter: java.net.URI[];
v = 0;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean contains(java.net.URI)>(v);
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean add(java.lang.Object)>(v);
v = 1;
label:
v = v + 1;
goto label;
label:
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void reconnect(boolean)>(v);
label:
return;
}
public void remove(boolean, java.net.URI[])
{
java.net.URI[] v;
int v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
boolean v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v := @parameter: java.net.URI[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean remove(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
return;
}
public void add(boolean, java.lang.String)
{
org.slf4j.Logger v;
java.lang.Exception v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
java.net.URI v;
boolean v, v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v := @parameter: java.lang.String;
label:
v = new java.net.URI;
specialinvoke v.<java.net.URI: void <init>(java.lang.String)>(v);
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean contains(java.net.URI)>(v);
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean add(java.lang.Object)>(v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void reconnect(boolean)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object)>("Failed to parse URI: {}", v);
label:
return;
catch java.lang.Exception from label to label with label;
}
public void reconnect(boolean)
{
java.lang.Throwable v;
org.slf4j.Logger v, v;
org.apache.activemq.thread.TaskRunner v;
java.lang.InterruptedException v;
java.lang.Thread v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started>;
if v == 0 goto label;
if v == 0 goto label;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance> = 1;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waking up reconnect task");
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.thread.TaskRunner reconnectTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void wakeup()>();
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
goto label;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Reconnect was triggered but transport is not started yet. Wait for start to connect the transport.");
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.util.List getConnectList()
{
java.util.ArrayList v;
int v, v, v, v;
java.net.URI v, v, v;
java.util.LinkedHashSet v;
boolean v, v;
double v, v;
org.slf4j.Logger v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.CopyOnWriteArrayList v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = new java.util.LinkedHashSet;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
specialinvoke v.<java.util.LinkedHashSet: void <init>(java.util.Collection)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
virtualinvoke v.<java.util.LinkedHashSet: boolean addAll(java.util.Collection)>(v);
v = 0;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI>;
v = virtualinvoke v.<java.util.LinkedHashSet: boolean remove(java.lang.Object)>(v);
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean randomize>;
if v == 0 goto label;
v = 0;
label:
v = virtualinvoke v.<java.util.ArrayList: int size()>();
if v >= v goto label;
v = staticinvoke <java.lang.Math: double random()>();
v = v * 100.0;
v = virtualinvoke v.<java.util.ArrayList: int size()>();
v = v % v;
v = virtualinvoke v.<java.util.ArrayList: java.lang.Object get(int)>(v);
v = virtualinvoke v.<java.util.ArrayList: java.lang.Object get(int)>(v);
virtualinvoke v.<java.util.ArrayList: java.lang.Object set(int,java.lang.Object)>(v, v);
virtualinvoke v.<java.util.ArrayList: java.lang.Object set(int,java.lang.Object)>(v, v);
v = v + 1;
goto label;
label:
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI>;
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("urlList connectionList:{}, from: {}", v, v);
return v;
}
public org.apache.activemq.transport.TransportListener getTransportListener()
{
org.apache.activemq.transport.failover.FailoverTransport v;
org.apache.activemq.transport.TransportListener v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
return v;
}
public void setTransportListener(org.apache.activemq.transport.TransportListener)
{
java.lang.Throwable v;
org.apache.activemq.transport.TransportListener v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.transport.TransportListener;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
entermonitor v;
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object narrow(java.lang.Class)
{
java.util.concurrent.atomic.AtomicReference v;
java.lang.Class v, v;
java.lang.Object v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Class: java.lang.Object cast(java.lang.Object)>(v);
return v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.lang.Object narrow(java.lang.Class)>(v);
return v;
label:
return null;
}
protected void restoreTransport(org.apache.activemq.transport.Transport) throws java.lang.Exception, java.io.IOException
{
java.lang.Throwable v;
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.activemq.state.ConnectionStateTracker v;
java.util.Collection v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.command.ConnectionControl v;
java.util.LinkedHashMap v;
java.util.Map v, v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.transport.Transport;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
v = new org.apache.activemq.command.ConnectionControl;
specialinvoke v.<org.apache.activemq.command.ConnectionControl: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.ConnectionControl: void setFaultTolerant(boolean)>(1);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void oneway(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void restore(org.apache.activemq.transport.Transport)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
entermonitor v;
label:
v = new java.util.LinkedHashMap;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.Map requestMap>;
specialinvoke v.<java.util.LinkedHashMap: void <init>(java.util.Map)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("restore requestMap, replay: {}", v);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void oneway(java.lang.Object)>(v);
goto label;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public boolean isUseExponentialBackOff()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean useExponentialBackOff>;
return v;
}
public void setUseExponentialBackOff(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean useExponentialBackOff> = v;
return;
}
public java.lang.String toString()
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
java.net.URI v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
if v != null goto label;
v = "unconnected";
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v = virtualinvoke v.<java.net.URI: java.lang.String toString()>();
label:
return v;
}
public java.lang.String getRemoteAddress()
{
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.lang.String getRemoteAddress()>();
return v;
label:
return null;
}
public boolean isFaultTolerant()
{
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
return 1;
}
private void doUpdateURIsFromDisk()
{
java.lang.Throwable v;
org.slf4j.Logger v;
java.io.IOException v;
java.io.InputStreamReader v;
java.lang.StringBuffer v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.io.BufferedReader v, v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String getUpdateURIsURL()>();
if v == null goto label;
v = null;
v = new java.lang.StringBuffer;
specialinvoke v.<java.lang.StringBuffer: void <init>()>();
label:
v = new java.io.BufferedReader;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.io.InputStreamReader getURLStream(java.lang.String)>(v);
specialinvoke v.<java.io.BufferedReader: void <init>(java.io.Reader)>(v);
label:
v = virtualinvoke v.<java.io.BufferedReader: java.lang.String readLine()>();
if v == null goto label;
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.String toString()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to read updateURIsURL: {} {}", v, v);
label:
goto label;
label:
v := @caughtexception;
throw v;
label:
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isRebalanceUpdateURIs()>();
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void processNewTransports(boolean,java.lang.String)>(v, 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;
}
final boolean doReconnect()
{
java.lang.Integer v, v, v;
byte v;
org.apache.activemq.broker.SslContext v;
java.lang.Exception v, v, v, v, v, v, v;
java.lang.Throwable v, v, v, v, v;
java.lang.Object[] v;
long v, v;
java.util.ArrayList v;
java.lang.String v;
java.io.IOException v;
org.apache.activemq.transport.TransportListener v, v, v, v, v;
java.net.URI v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.transport.Transport v;
java.util.List v, v, v, v;
java.util.concurrent.atomic.AtomicReference v, v, v, v, v;
org.apache.activemq.command.BrokerInfo v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v, v, v, v, v, v, v, v;
java.util.Iterator v;
java.lang.InterruptedException v, v;
java.lang.Object v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = null;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void doUpdateURIsFromDisk()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
if v == null goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable>;
if v == 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
if v == null goto label;
label:
exitmonitor v;
label:
return 0;
label:
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List getConnectList()>();
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("No uris available to connect to.");
v = v;
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doReconnect>;
if v != 0 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean compareURIs(java.net.URI,java.net.URI)>(v, v);
if v == 0 goto label;
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance> = 0;
exitmonitor v;
label:
return 0;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Doing rebalance from: {} to {}", v, v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object getAndSet(java.lang.Object)>(null);
if v == null goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void disposeTransport(org.apache.activemq.transport.Transport)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Caught an exception stopping existing transport for rebalance", v);
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doReconnect> = 0;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doRebalance> = 0;
label:
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void resetReconnectDelay()>();
v = null;
v = null;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object backupMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean backup>;
if v == 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = new java.util.ArrayList;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean randomize>;
if v == 0 goto label;
staticinvoke <java.util.Collections: void shuffle(java.util.List)>(v);
label:
v = virtualinvoke v.<java.util.ArrayList: java.lang.Object remove(int)>(0);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: org.apache.activemq.transport.Transport getTransport()>();
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: java.net.URI getUri()>();
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: org.apache.activemq.command.BrokerInfo getBrokerInfo()>();
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void processCommand(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object getAndSet(java.lang.Object)>(null);
if v == null goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void disposeTransport(org.apache.activemq.transport.Transport)>(v);
label:
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable> = 0;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v != null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void doDelay()>();
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
if v != null goto label;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.broker.SslContext brokerSslContext>;
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(v);
if v != null goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI addExtraQueryOptions(java.net.URI)>(v);
v = staticinvoke <org.apache.activemq.transport.TransportFactory: org.apache.activemq.transport.Transport compositeConnect(java.net.URI)>(v);
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Attempting {}th connect to: {}", v, v);
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener createTransportListener(org.apache.activemq.transport.Transport)>(v);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean started>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection>;
if v != 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void restoreTransport(org.apache.activemq.transport.Transport)>(v);
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Connection established");
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay>;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = v;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isPriority(java.net.URI)>(v);
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures> = 0;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v != null goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
virtualinvoke v.<java.lang.Object: void wait(long)>(2000L);
label:
goto label;
label:
v := @caughtexception;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void transportResumed()>();
goto label;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("transport resumed by transport listener not set");
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection>;
if v == 0 goto label;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection> = 0;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Successfully connected to {}", v);
goto label;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Successfully reconnected to {}", v);
label:
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
exitmonitor v;
label:
return 0;
label:
v := @caughtexception;
v = v;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Connect fail to: {}, reason: {}", v, v);
if v == null goto label;
label:
interfaceinvoke v.<org.apache.activemq.transport.Transport: void stop()>();
v = null;
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Stop of failed transport: {} failed with reason: {}", v, v);
label:
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
goto label;
label:
v := @caughtexception;
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
throw v;
label:
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: int calculateReconnectAttemptLimit()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
v = v + 1;
v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures> = v;
v = (int) -1;
if v == v goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
if v < v goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to connect to {} after: {} attempt(s)", v, v);
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v != null goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object listenerMutex>;
virtualinvoke v.<java.lang.Object: void wait(long)>(2000L);
label:
goto label;
label:
v := @caughtexception;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Exception connectionFailure>;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void propagateFailureToExceptionListener(java.lang.Exception)>(v);
exitmonitor v;
label:
return 0;
label:
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: int getWarnAfterReconnectAttempts()>();
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
if v == 1 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
v = v % v;
if v != 0 goto label;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
if v != null goto label;
v = "?";
goto label;
label:
v = virtualinvoke v.<java.lang.Exception: java.lang.String getLocalizedMessage()>();
label:
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("Failed to connect to {} after: {} attempt(s) with {}, continuing to retry.", v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void doDelay()>();
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Exception 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.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;
catch java.lang.Throwable 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.lang.Throwable from label to label with label;
}
private void doDelay()
{
java.lang.Throwable v;
long v, v, v, v, v, v, v;
byte v, v;
java.lang.Long v;
java.lang.Thread v;
boolean v;
double v, v;
org.slf4j.Logger v;
java.lang.InterruptedException v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object sleepMutex>;
entermonitor v;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Waiting {} ms before attempting connection", v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object sleepMutex>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
virtualinvoke v.<java.lang.Object: void wait(long)>(v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean useExponentialBackOff>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: double backOffMultiplier>;
v = v * v;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = v;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long maxReconnectDelay>;
v = v cmp v;
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long maxReconnectDelay>;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = v;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void resetReconnectDelay()
{
byte v;
long v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean useExponentialBackOff>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay>;
v = v cmp 10L;
if v != 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: long initialReconnectDelay>;
v.<org.apache.activemq.transport.failover.FailoverTransport: long reconnectDelay> = v;
label:
return;
}
private void propagateFailureToExceptionListener(java.lang.Exception)
{
org.apache.activemq.transport.TransportListener v, v, v;
java.io.IOException v;
java.lang.Exception v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.Exception;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
if v == null goto label;
v = v instanceof java.io.IOException;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onException(java.io.IOException)>(v);
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener transportListener>;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
interfaceinvoke v.<org.apache.activemq.transport.TransportListener: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
return;
}
private int calculateReconnectAttemptLimit()
{
int v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int maxReconnectAttempts>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean firstConnection>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int startupMaxReconnectAttempts>;
v = (int) -1;
if v == v goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int startupMaxReconnectAttempts>;
label:
return v;
}
private boolean shouldBuildBackups()
{
java.util.List v;
int v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v, v, v, v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean backup>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int backupPoolSize>;
if v < v goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable>;
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority>;
if v != 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
final boolean buildBackups()
{
org.apache.activemq.transport.TransportListener v;
org.apache.activemq.broker.SslContext v;
java.net.URI v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.transport.Transport v, v;
java.lang.Exception v;
java.util.List v, v, v, v, v, v, v, v, v;
org.apache.activemq.transport.failover.BackupTransport v;
java.lang.Throwable v, v;
java.util.ArrayList v, v, v;
int v, v, v, v;
org.slf4j.Logger v;
java.util.Iterator v, v, v;
java.lang.Object v, v, v, v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object backupMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean shouldBuildBackups()>();
if v == 0 goto label;
v = new java.util.ArrayList;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.ArrayList priorityList>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List getConnectList()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.util.ArrayList: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: boolean isDisposed()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
interfaceinvoke v.<java.util.List: boolean removeAll(java.util.Collection)>(v);
interfaceinvoke v.<java.util.List: void clear()>();
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
if v != 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean shouldBuildBackups()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI addExtraQueryOptions(java.net.URI)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI connectedTransportURI>;
v = virtualinvoke v.<java.net.URI: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.broker.SslContext brokerSslContext>;
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(v);
v = new org.apache.activemq.transport.failover.BackupTransport;
specialinvoke v.<org.apache.activemq.transport.failover.BackupTransport: void <init>(org.apache.activemq.transport.failover.FailoverTransport)>(v);
virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: void setUri(java.net.URI)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = staticinvoke <org.apache.activemq.transport.TransportFactory: org.apache.activemq.transport.Transport compositeConnect(java.net.URI)>(v);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: void setTransport(org.apache.activemq.transport.Transport)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isPriority(java.net.URI)>(v);
if v == 0 goto label;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackupAvailable> = 1;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
interfaceinvoke v.<java.util.List: void add(int,java.lang.Object)>(0, v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int backupPoolSize>;
if v <= v goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v - 1;
v = interfaceinvoke v.<java.util.List: java.lang.Object remove(int)>(v);
virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: void setDisposed(boolean)>(1);
v = virtualinvoke v.<org.apache.activemq.transport.failover.BackupTransport: org.apache.activemq.transport.Transport getTransport()>();
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.transport.TransportListener disposedListener>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void disposeTransport(org.apache.activemq.transport.Transport)>(v);
goto label;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.List backups>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Failed to build backup ", v);
label:
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
goto label;
label:
v := @caughtexception;
staticinvoke <org.apache.activemq.broker.SslContext: void setCurrentSslContext(org.apache.activemq.broker.SslContext)>(null);
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return 0;
catch java.lang.Exception 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.lang.Throwable from label to label with label;
}
protected boolean isPriority(java.net.URI)
{
java.util.Iterator v;
java.util.ArrayList v, v;
java.lang.Object v, v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
boolean v, v, v, v, v, v;
java.util.concurrent.CopyOnWriteArrayList v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.net.URI;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean priorityBackup>;
if v != 0 goto label;
return 0;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.ArrayList priorityList>;
v = virtualinvoke v.<java.util.ArrayList: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.ArrayList priorityList>;
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean compareURIs(java.net.URI,java.net.URI)>(v, v);
if v == 0 goto label;
return 1;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: java.lang.Object get(int)>(0);
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean compareURIs(java.net.URI,java.net.URI)>(v, v);
return v;
label:
return 0;
}
public boolean isDisposed()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean disposed>;
return v;
}
public boolean isConnected()
{
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.atomic.AtomicReference v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void reconnect(java.net.URI) throws java.io.IOException
{
java.net.URI[] v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.net.URI;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: void clear()>();
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean doReconnect> = 1;
v = newarray (java.net.URI)[1];
v[0] = v;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void add(boolean,java.net.URI[])>(1, v);
return;
}
public boolean isReconnectSupported()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean reconnectSupported>;
return v;
}
public void setReconnectSupported(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean reconnectSupported> = v;
return;
}
public boolean isUpdateURIsSupported()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean updateURIsSupported>;
return v;
}
public void setUpdateURIsSupported(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean updateURIsSupported> = v;
return;
}
public void updateURIs(boolean, java.net.URI[]) throws java.io.IOException
{
java.lang.Throwable v;
java.util.HashSet v, v;
java.net.URI[] v;
int v, v, v;
java.net.URI v, v, v;
boolean v, v, v, v, v, v, v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.CopyOnWriteArrayList v, v, v, v, v, v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v := @parameter: java.net.URI[];
v = virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean isUpdateURIsSupported()>();
if v == 0 goto label;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
virtualinvoke v.<java.util.HashSet: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: void clear()>();
if v == null goto label;
v = lengthof v;
if v <= 0 goto label;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean add(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI>;
v = virtualinvoke v.<java.net.URI: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.net.URI failedConnectTransportURI> = null;
label:
v = v + 1;
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = virtualinvoke v.<java.util.HashSet: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean isEmpty()>();
if v != 0 goto label;
label:
v = new java.util.HashSet;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList updated>;
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = virtualinvoke v.<java.util.HashSet: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean buildBackups()>();
virtualinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: void reconnect(boolean)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.String getUpdateURIsURL()
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String updateURIsURL>;
return v;
}
public void setUpdateURIsURL(java.lang.String)
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.String;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String updateURIsURL> = v;
return;
}
public boolean isRebalanceUpdateURIs()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean rebalanceUpdateURIs>;
return v;
}
public void setRebalanceUpdateURIs(boolean)
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: boolean;
v.<org.apache.activemq.transport.failover.FailoverTransport: boolean rebalanceUpdateURIs> = v;
return;
}
public int getReceiveCounter()
{
int v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != null goto label;
return 0;
label:
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: int getReceiveCounter()>();
return v;
}
public int getConnectFailures()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int connectFailures>;
return v;
}
public void connectionInterruptProcessingComplete(org.apache.activemq.command.ConnectionId)
{
java.lang.Throwable v;
org.apache.activemq.command.ConnectionId v;
org.apache.activemq.state.ConnectionStateTracker v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: org.apache.activemq.command.ConnectionId;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.Object reconnectMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
virtualinvoke v.<org.apache.activemq.state.ConnectionStateTracker: void connectionInterruptProcessingComplete(org.apache.activemq.transport.Transport,org.apache.activemq.command.ConnectionId)>(v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public org.apache.activemq.state.ConnectionStateTracker getStateTracker()
{
org.apache.activemq.transport.failover.FailoverTransport v;
org.apache.activemq.state.ConnectionStateTracker v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: org.apache.activemq.state.ConnectionStateTracker stateTracker>;
return v;
}
public boolean isConnectedToPriority()
{
org.apache.activemq.transport.failover.FailoverTransport v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: boolean connectedToPriority>;
return v;
}
private boolean contains(java.net.URI)
{
java.util.Iterator v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.net.URI v;
boolean v, v, v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.net.URI;
v = 0;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.CopyOnWriteArrayList uris>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.activemq.transport.failover.FailoverTransport: boolean compareURIs(java.net.URI,java.net.URI)>(v, v);
if v == 0 goto label;
v = 1;
label:
return v;
}
private boolean compareURIs(java.net.URI, java.net.URI)
{
java.net.InetAddress v, v;
int v, v;
java.lang.String v, v, v, v;
java.net.URI v, v;
boolean v, v, v;
org.slf4j.Logger v, v;
java.io.IOException v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.net.URI;
v := @parameter: java.net.URI;
v = 0;
if v == null goto label;
if v != null goto label;
label:
return 0;
label:
v = virtualinvoke v.<java.net.URI: int getPort()>();
v = virtualinvoke v.<java.net.URI: int getPort()>();
if v != v goto label;
v = null;
label:
v = virtualinvoke v.<java.net.URI: java.lang.String getHost()>();
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = virtualinvoke v.<java.net.URI: java.lang.String getHost()>();
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = virtualinvoke v.<java.net.InetAddress: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = 1;
label:
goto label;
label:
v := @caughtexception;
if v != null goto label;
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to Lookup INetAddress for URI[{}] : {}", v, v);
goto label;
label:
v = <org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to Lookup INetAddress for URI[{}] : {}", v, v);
label:
v = virtualinvoke v.<java.net.URI: java.lang.String getHost()>();
v = virtualinvoke v.<java.net.URI: java.lang.String getHost()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v == 0 goto label;
v = 1;
label:
return v;
catch java.io.IOException from label to label with label;
}
private java.io.InputStreamReader getURLStream(java.lang.String) throws java.io.IOException
{
java.net.MalformedURLException v;
java.net.URL v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
java.io.InputStreamReader v, v;
java.io.InputStream v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.String;
v = null;
label:
v = new java.net.URL;
specialinvoke v.<java.net.URL: void <init>(java.lang.String)>(v);
v = new java.io.InputStreamReader;
v = virtualinvoke v.<java.net.URL: java.io.InputStream openStream()>();
specialinvoke v.<java.io.InputStreamReader: void <init>(java.io.InputStream)>(v);
v = v;
label:
goto label;
label:
v := @caughtexception;
label:
return v;
catch java.net.MalformedURLException from label to label with label;
}
private java.net.URI addExtraQueryOptions(java.net.URI)
{
java.net.URISyntaxException v;
java.lang.RuntimeException v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v, v, v, v, v, v, v;
java.net.URI v;
boolean v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.net.URI;
label:
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String nestedExtraQueryOptions>;
if v == null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String nestedExtraQueryOptions>;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<java.net.URI: java.lang.String getQuery()>();
if v != null goto label;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String nestedExtraQueryOptions>;
v = staticinvoke <org.apache.activemq.util.URISupport: java.net.URI createURIWithQuery(java.net.URI,java.lang.String)>(v, v);
goto label;
label:
v = virtualinvoke v.<java.net.URI: java.lang.String getQuery()>();
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String nestedExtraQueryOptions>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, 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[])>("\u0001&\u0001");
v = staticinvoke <org.apache.activemq.util.URISupport: java.net.URI createURIWithQuery(java.net.URI,java.lang.String)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return v;
catch java.net.URISyntaxException from label to label with label;
}
public void setNestedExtraQueryOptions(java.lang.String)
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.lang.String v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.lang.String;
v.<org.apache.activemq.transport.failover.FailoverTransport: java.lang.String nestedExtraQueryOptions> = v;
return;
}
public int getWarnAfterReconnectAttempts()
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: int warnAfterReconnectAttempts>;
return v;
}
public void setWarnAfterReconnectAttempts(int)
{
int v;
org.apache.activemq.transport.failover.FailoverTransport v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: int;
v.<org.apache.activemq.transport.failover.FailoverTransport: int warnAfterReconnectAttempts> = v;
return;
}
public java.security.cert.X509Certificate[] getPeerCertificates()
{
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.security.cert.X509Certificate[] v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.security.cert.X509Certificate[] getPeerCertificates()>();
return v;
label:
return null;
}
public void setPeerCertificates(java.security.cert.X509Certificate[])
{
org.apache.activemq.transport.failover.FailoverTransport v;
java.security.cert.X509Certificate[] v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v := @parameter: java.security.cert.X509Certificate[];
return;
}
public org.apache.activemq.wireformat.WireFormat getWireFormat()
{
org.apache.activemq.wireformat.WireFormat v;
java.lang.Object v;
org.apache.activemq.transport.failover.FailoverTransport v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.activemq.transport.failover.FailoverTransport;
v = v.<org.apache.activemq.transport.failover.FailoverTransport: java.util.concurrent.atomic.AtomicReference connectedTransport>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: org.apache.activemq.wireformat.WireFormat getWireFormat()>();
return v;
label:
return null;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/transport/failover/FailoverTransport;");
<org.apache.activemq.transport.failover.FailoverTransport: org.slf4j.Logger LOG> = v;
return;
}
}