public class org.apache.activemq.partition.PartitionBroker extends org.apache.activemq.broker.BrokerFilter
{
protected static final org.slf4j.Logger LOG;
protected final org.apache.activemq.partition.PartitionBrokerPlugin plugin;
protected boolean reloadConfigOnPoll;
protected final java.util.concurrent.ConcurrentMap monitors;
public void <init>(org.apache.activemq.broker.Broker, org.apache.activemq.partition.PartitionBrokerPlugin)
{
org.apache.activemq.broker.Broker v;
java.util.concurrent.ConcurrentHashMap v;
org.apache.activemq.partition.PartitionBrokerPlugin v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.broker.Broker;
v := @parameter: org.apache.activemq.partition.PartitionBrokerPlugin;
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void <init>(org.apache.activemq.broker.Broker)>(v);
v.<org.apache.activemq.partition.PartitionBroker: boolean reloadConfigOnPoll> = 1;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ConcurrentMap monitors> = v;
v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.PartitionBrokerPlugin plugin> = v;
return;
}
public void start() throws java.lang.Exception
{
org.apache.activemq.partition.PartitionBroker$1 v;
java.util.concurrent.ThreadPoolExecutor v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void start()>();
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ThreadPoolExecutor getExecutor()>();
v = new org.apache.activemq.partition.PartitionBroker$1;
specialinvoke v.<org.apache.activemq.partition.PartitionBroker$1: void <init>(org.apache.activemq.partition.PartitionBroker)>(v);
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void execute(java.lang.Runnable)>(v);
return;
}
protected void onMonitorStart()
{
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
return;
}
protected void onMonitorStop()
{
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
return;
}
protected void runPartitionMonitor()
{
java.util.Iterator v;
java.util.Collection v;
org.apache.activemq.partition.PartitionBroker v;
java.lang.Exception v;
java.util.concurrent.ConcurrentMap v;
java.lang.InterruptedException v;
java.lang.Object v;
boolean v, v, v;
v := @this: org.apache.activemq.partition.PartitionBroker;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: boolean isStopped()>();
if v != 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: void monitorWait()>();
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
v = v.<org.apache.activemq.partition.PartitionBroker: boolean reloadConfigOnPoll>;
if v == 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: void reloadConfiguration()>();
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
v = v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ConcurrentMap monitors>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: 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()>();
virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: void checkTarget(org.apache.activemq.partition.PartitionBroker$ConnectionMonitor)>(v);
goto label;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
}
protected void monitorWait() throws java.lang.InterruptedException
{
java.lang.Throwable v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
entermonitor v;
label:
virtualinvoke v.<java.lang.Object: void wait(long)>(1000L);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void monitorWakeup()
{
java.lang.Throwable v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
entermonitor v;
label:
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;
}
protected void reloadConfiguration() throws java.lang.Exception
{
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
return;
}
protected void checkTarget(org.apache.activemq.partition.PartitionBroker$ConnectionMonitor)
{
org.apache.activemq.partition.dto.Target v;
org.apache.activemq.command.ConnectionControl v;
java.util.HashSet v, v, v, v;
org.apache.activemq.broker.ConnectionContext v, v, v;
java.lang.String v, v, v, v, v, v;
org.apache.activemq.broker.Connection v;
boolean v;
org.apache.activemq.partition.PartitionBroker$ConnectionMonitor v;
org.slf4j.Logger v, v, v, v;
org.apache.activemq.command.ConnectionId v, v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.partition.PartitionBroker$ConnectionMonitor;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Target pickBestBroker(org.apache.activemq.partition.PartitionBroker$ConnectionMonitor)>(v);
if v == null goto label;
v = v.<org.apache.activemq.partition.dto.Target: java.util.HashSet ids>;
if v != null goto label;
label:
v = <org.apache.activemq.partition.PartitionBroker: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.command.ConnectionId getConnectionId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.ConnectionId)>(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[])>("No partition target found for connection: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>(v);
return;
label:
v = v.<org.apache.activemq.partition.dto.Target: java.util.HashSet ids>;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: java.lang.String getBrokerName()>();
v = virtualinvoke v.<java.util.HashSet: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = <org.apache.activemq.partition.PartitionBroker: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.command.ConnectionId getConnectionId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.ConnectionId)>(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[])>("We are a partition target for connection: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>(v);
return;
label:
v = v.<org.apache.activemq.partition.dto.Target: java.util.HashSet ids>;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: java.lang.String getConnectionString(java.util.HashSet)>(v);
if v != null goto label;
v = <org.apache.activemq.partition.PartitionBroker: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.partition.dto.Target: java.util.HashSet ids>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.HashSet)>(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[])>("Could not convert to partition targets to connection string: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>(v);
return;
label:
v = <org.apache.activemq.partition.PartitionBroker: 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[])>("Redirecting connection to: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
v = new org.apache.activemq.command.ConnectionControl;
specialinvoke v.<org.apache.activemq.command.ConnectionControl: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.ConnectionControl: void setConnectedBrokers(java.lang.String)>(v);
virtualinvoke v.<org.apache.activemq.command.ConnectionControl: void setRebalanceConnection(boolean)>(1);
virtualinvoke v.<org.apache.activemq.broker.TransportConnection: void dispatchAsync(org.apache.activemq.command.Command)>(v);
return;
}
protected java.lang.String getConnectionString(java.util.HashSet)
{
java.util.Iterator v;
org.apache.activemq.partition.PartitionBroker v;
java.util.HashSet v;
int v, v;
org.apache.activemq.partition.PartitionBrokerPlugin v;
java.lang.Object v;
java.lang.StringBuilder v;
java.lang.String v, v;
boolean v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: java.util.HashSet;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = virtualinvoke v.<java.util.HashSet: 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 = v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.PartitionBrokerPlugin plugin>;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBrokerPlugin: java.lang.String getBrokerURL(org.apache.activemq.partition.PartitionBroker,java.lang.String)>(v, v);
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(44);
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
if v != 0 goto label;
return null;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
protected org.apache.activemq.partition.dto.Target pickBestBroker(org.apache.activemq.partition.PartitionBroker$ConnectionMonitor)
{
java.net.InetAddress v;
org.apache.activemq.broker.ConnectionContext v, v, v, v;
org.apache.activemq.partition.PartitionBroker$ConnectionMonitor v;
java.util.Set v;
java.lang.String v, v, v;
org.apache.activemq.broker.Connection v;
org.apache.activemq.command.ConsumerInfo v;
org.apache.activemq.partition.PartitionBroker$Score v;
java.net.SocketAddress v;
boolean v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Collection v, v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.command.ActiveMQDestination v;
java.util.List v, v;
org.apache.activemq.command.ActiveMQDestination[] v;
org.apache.activemq.partition.dto.Target v, v;
java.util.HashMap v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.HashSet v;
int v, v, v, v;
org.apache.activemq.partition.dto.Partitioning v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Iterator v, v, v, v;
org.apache.activemq.state.ConnectionState v;
org.apache.activemq.partition.PartitionBroker v;
java.lang.Object v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.partition.PartitionBroker$ConnectionMonitor;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
if v != null goto label;
return null;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap bySourceIp>;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap bySourceIp>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
v = virtualinvoke v.<org.apache.activemq.broker.TransportConnection: org.apache.activemq.transport.Transport getTransport()>();
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.lang.Object narrow(java.lang.Class)>(class "Ljava/net/Socket;");
if v == null goto label;
v = virtualinvoke v.<java.net.Socket: java.net.SocketAddress getRemoteSocketAddress()>();
v = v instanceof java.net.InetSocketAddress;
if v == 0 goto label;
v = virtualinvoke v.<java.net.InetSocketAddress: java.net.InetAddress getAddress()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap bySourceIp>;
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byUserName>;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byUserName>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.lang.String getUserName()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byUserName>;
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byClientId>;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byClientId>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.lang.String getClientId()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byClientId>;
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byQueue>;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byQueue>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byTopic>;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byTopic>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
label:
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.state.ConnectionState getConnectionState()>();
v = virtualinvoke v.<org.apache.activemq.state.ConnectionState: java.util.Collection getSessionStates()>();
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 = virtualinvoke v.<org.apache.activemq.state.SessionState: java.util.Collection getConsumerStates()>();
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 = virtualinvoke v.<org.apache.activemq.state.ConsumerState: org.apache.activemq.command.ConsumerInfo getInfo()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: boolean isComposite()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: org.apache.activemq.command.ActiveMQDestination[] getCompositeDestinations()>();
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
virtualinvoke v.<java.util.HashSet: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = staticinvoke <java.util.Collections: java.util.List singletonList(java.lang.Object)>(v);
virtualinvoke v.<java.util.HashSet: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = virtualinvoke v.<java.util.HashSet: 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.partition.PartitionBroker: org.apache.activemq.partition.dto.Target getTarget(org.apache.activemq.command.ActiveMQDestination)>(v);
if v == null goto label;
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new org.apache.activemq.partition.PartitionBroker$Score;
specialinvoke v.<org.apache.activemq.partition.PartitionBroker$Score: void <init>()>();
v = v;
virtualinvoke v.<java.util.HashMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v.<org.apache.activemq.partition.PartitionBroker$Score: int value>;
v = v + 1;
v.<org.apache.activemq.partition.PartitionBroker$Score: int value> = v;
goto label;
label:
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = 0;
v = virtualinvoke v.<java.util.HashMap: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: 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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = v.<org.apache.activemq.partition.PartitionBroker$Score: int value>;
if v <= v goto label;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = v.<org.apache.activemq.partition.PartitionBroker$Score: int value>;
goto label;
label:
return v;
label:
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: org.apache.activemq.partition.dto.Target findBestProducerTarget(org.apache.activemq.partition.PartitionBroker)>(v);
if v == null goto label;
return v;
label:
return null;
}
protected org.apache.activemq.partition.dto.Target getTarget(org.apache.activemq.command.ActiveMQDestination)
{
java.util.HashMap v, v, v, v, v, v;
java.lang.String v, v;
org.apache.activemq.partition.dto.Partitioning v;
boolean v, v, v, v;
org.apache.activemq.partition.PartitionBroker v;
org.apache.activemq.command.ActiveMQDestination v;
java.lang.Object v, v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.dto.Partitioning getConfig()>();
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: boolean isQueue()>();
if v == 0 goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byQueue>;
if v == null goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byQueue>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byQueue>;
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: java.lang.String getPhysicalName()>();
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
return v;
label:
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: boolean isTopic()>();
if v == 0 goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byTopic>;
if v == null goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byTopic>;
v = virtualinvoke v.<java.util.HashMap: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.partition.dto.Partitioning: java.util.HashMap byTopic>;
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: java.lang.String getPhysicalName()>();
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
return v;
label:
return null;
}
public void addConnection(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.ConnectionInfo) throws java.lang.Exception
{
org.apache.activemq.partition.PartitionBroker$ConnectionMonitor v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.ConnectionInfo v;
org.apache.activemq.command.ConnectionId v;
org.apache.activemq.partition.PartitionBroker v;
boolean v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.ConnectionInfo;
v = virtualinvoke v.<org.apache.activemq.command.ConnectionInfo: boolean isFaultTolerant()>();
if v == 0 goto label;
v = new org.apache.activemq.partition.PartitionBroker$ConnectionMonitor;
specialinvoke v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: void <init>(org.apache.activemq.broker.ConnectionContext)>(v);
v = v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ConcurrentMap monitors>;
v = virtualinvoke v.<org.apache.activemq.command.ConnectionInfo: org.apache.activemq.command.ConnectionId getConnectionId()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void addConnection(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.ConnectionInfo)>(v, v);
virtualinvoke v.<org.apache.activemq.partition.PartitionBroker: void checkTarget(org.apache.activemq.partition.PartitionBroker$ConnectionMonitor)>(v);
goto label;
label:
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void addConnection(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.ConnectionInfo)>(v, v);
label:
return;
}
public void removeConnection(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.ConnectionInfo, java.lang.Throwable) throws java.lang.Exception
{
java.lang.Throwable v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.ConnectionInfo v;
org.apache.activemq.command.ConnectionId v;
org.apache.activemq.partition.PartitionBroker v;
boolean v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.ConnectionInfo;
v := @parameter: java.lang.Throwable;
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void removeConnection(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.ConnectionInfo,java.lang.Throwable)>(v, v, v);
v = virtualinvoke v.<org.apache.activemq.command.ConnectionInfo: boolean isFaultTolerant()>();
if v == 0 goto label;
v = v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ConcurrentMap monitors>;
v = virtualinvoke v.<org.apache.activemq.command.ConnectionInfo: org.apache.activemq.command.ConnectionId getConnectionId()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
label:
return;
}
public void send(org.apache.activemq.broker.ProducerBrokerExchange, org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.Message v;
org.apache.activemq.command.ConnectionId v;
java.lang.Object v;
org.apache.activemq.partition.PartitionBroker v;
org.apache.activemq.broker.ProducerBrokerExchange v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v := @parameter: org.apache.activemq.broker.ProducerBrokerExchange;
v := @parameter: org.apache.activemq.command.Message;
v = v.<org.apache.activemq.partition.PartitionBroker: java.util.concurrent.ConcurrentMap monitors>;
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.command.ConnectionId getConnectionId()>();
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
virtualinvoke v.<org.apache.activemq.partition.PartitionBroker$ConnectionMonitor: void onSend(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
label:
return;
}
protected org.apache.activemq.partition.dto.Partitioning getConfig()
{
org.apache.activemq.partition.PartitionBrokerPlugin v;
org.apache.activemq.partition.dto.Partitioning v;
org.apache.activemq.partition.PartitionBroker v;
v := @this: org.apache.activemq.partition.PartitionBroker;
v = v.<org.apache.activemq.partition.PartitionBroker: org.apache.activemq.partition.PartitionBrokerPlugin plugin>;
v = virtualinvoke v.<org.apache.activemq.partition.PartitionBrokerPlugin: org.apache.activemq.partition.dto.Partitioning getConfig()>();
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/partition/PartitionBroker;");
<org.apache.activemq.partition.PartitionBroker: org.slf4j.Logger LOG> = v;
return;
}
}