public class org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor extends org.apache.activemq.broker.region.DestinationFilter
{
private final java.lang.String prefix;
private final java.lang.String postfix;
private final boolean local;
private final boolean concurrentSend;
private final boolean transactedSend;
private final boolean dropMessageOnResourceLimit;
private final boolean setOriginalDestination;
private final org.apache.activemq.util.LRUCache cache;
public void <init>(org.apache.activemq.broker.region.Destination, org.apache.activemq.broker.region.virtual.VirtualTopic)
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.broker.region.virtual.VirtualTopic v;
java.lang.String v, v;
org.apache.activemq.util.LRUCache v;
boolean v, v, v, v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.broker.region.Destination;
v := @parameter: org.apache.activemq.broker.region.virtual.VirtualTopic;
specialinvoke v.<org.apache.activemq.broker.region.DestinationFilter: void <init>(org.apache.activemq.broker.region.Destination)>(v);
v = new org.apache.activemq.util.LRUCache;
specialinvoke v.<org.apache.activemq.util.LRUCache: void <init>()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.util.LRUCache cache> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: java.lang.String getPrefix()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: java.lang.String getPostfix()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String postfix> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: boolean isLocal()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean local> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: boolean isConcurrentSend()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean concurrentSend> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: boolean isTransactedSend()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean transactedSend> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: boolean isDropOnResourceLimit()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean dropMessageOnResourceLimit> = v;
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopic: boolean isSetOriginalDestination()>();
v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean setOriginalDestination> = v;
return;
}
public org.apache.activemq.broker.region.Topic getTopic()
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.broker.region.Destination next>;
return v;
}
public void send(org.apache.activemq.broker.ProducerBrokerExchange, org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.command.BrokerId[] v;
org.apache.activemq.command.ActiveMQDestination v, v;
org.apache.activemq.command.Message v;
org.apache.activemq.broker.ProducerBrokerExchange v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.broker.ProducerBrokerExchange;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isAdvisory()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean local>;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.BrokerId[] getBrokerPath()>();
if v != null goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.command.ActiveMQDestination getQueueConsumersWildcard(org.apache.activemq.command.ActiveMQDestination)>(v);
virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message,org.apache.activemq.command.ActiveMQDestination)>(v, v, v);
label:
specialinvoke v.<org.apache.activemq.broker.region.DestinationFilter: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
return;
}
protected void send(org.apache.activemq.broker.ProducerBrokerExchange, org.apache.activemq.command.Message, org.apache.activemq.command.ActiveMQDestination) throws java.lang.Exception
{
org.apache.activemq.broker.ConnectionContext v, v, v, v;
org.apache.activemq.command.Message v, v;
boolean v, v, v, v, v, v;
org.apache.activemq.broker.BrokerService v;
java.util.Set v;
org.apache.activemq.command.ActiveMQDestination v, v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.thread.TaskRunnerFactory v;
org.apache.activemq.broker.ProducerBrokerExchange v;
java.lang.Throwable v, v;
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.command.LocalTransactionId v;
java.util.concurrent.atomic.AtomicReference v;
org.apache.activemq.broker.Broker v;
int v, v;
java.util.Iterator v, v;
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor$1 v;
java.lang.Object v, v, v, v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.broker.ProducerBrokerExchange;
v := @parameter: org.apache.activemq.command.Message;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
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.broker.Broker getBroker()>();
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: java.util.Set getDestinations(org.apache.activemq.command.ActiveMQDestination)>(v);
v = interfaceinvoke v.<java.util.Set: int size()>();
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
v = specialinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.command.LocalTransactionId beginLocalTransaction(int,org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.Message)>(v, v, v);
label:
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean concurrentSend>;
if v == 0 goto label;
if v <= 1 goto label;
v = new java.util.concurrent.CountDownLatch;
v = interfaceinvoke v.<java.util.Set: int size()>();
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(v);
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: org.apache.activemq.broker.BrokerService getBrokerService()>();
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 = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean shouldDispatch(org.apache.activemq.broker.Broker,org.apache.activemq.command.Message,org.apache.activemq.broker.region.Destination)>(v, v, v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.BrokerService: org.apache.activemq.thread.TaskRunnerFactory getTaskRunnerFactory()>();
v = new org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor$1;
specialinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor$1: void <init>(org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor,java.util.concurrent.atomic.AtomicReference,org.apache.activemq.broker.region.Destination,org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message,java.util.concurrent.CountDownLatch)>(v, v, v, v, v, v);
virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: void execute(java.lang.Runnable)>(v);
goto label;
label:
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
goto label;
label:
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
throw v;
label:
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 = virtualinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean shouldDispatch(org.apache.activemq.broker.Broker,org.apache.activemq.command.Message,org.apache.activemq.broker.region.Destination)>(v, v, v);
if v == 0 goto label;
label:
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.command.ActiveMQDestination getActiveMQDestination()>();
v = specialinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.command.Message copy(org.apache.activemq.command.Message,org.apache.activemq.command.ActiveMQDestination)>(v, v);
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean dropMessageOnResourceLimit>;
if v != 0 goto label;
throw v;
label:
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
specialinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: void commit(org.apache.activemq.command.LocalTransactionId,org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.Message)>(v, v, v);
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
specialinvoke v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: void commit(org.apache.activemq.command.LocalTransactionId,org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.Message)>(v, v, v);
throw v;
label:
return;
catch javax.jms.ResourceAllocationException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private org.apache.activemq.command.Message copy(org.apache.activemq.command.Message, org.apache.activemq.command.ActiveMQDestination)
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.command.Message v, v;
boolean v;
org.apache.activemq.command.ActiveMQDestination v, v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.command.Message;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.Message copy()>();
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean setOriginalDestination>;
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.command.Message: void setDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getDestination()>();
virtualinvoke v.<org.apache.activemq.command.Message: void setOriginalDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
label:
return v;
}
private org.apache.activemq.command.LocalTransactionId beginLocalTransaction(int, org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.command.LocalTransactionId v, v;
long v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.Message v;
int v;
java.lang.String v;
org.apache.activemq.command.TransactionId v;
boolean v, v;
org.apache.activemq.command.ConnectionId v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.command.ProducerId v;
java.lang.Object v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: int;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.Message;
v = null;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: boolean transactedSend>;
if v == 0 goto label;
if v <= 1 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isPersistent()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.TransactionId getTransactionId()>();
if v != null goto label;
v = new org.apache.activemq.command.LocalTransactionId;
v = new org.apache.activemq.command.ConnectionId;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: org.apache.activemq.command.ProducerId getProducerId()>();
v = virtualinvoke v.<org.apache.activemq.command.ProducerId: java.lang.String toString()>();
specialinvoke v.<org.apache.activemq.command.ConnectionId: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: long getProducerSequenceId()>();
specialinvoke v.<org.apache.activemq.command.LocalTransactionId: void <init>(org.apache.activemq.command.ConnectionId,long)>(v, v);
v = v;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Broker getBroker()>();
interfaceinvoke v.<org.apache.activemq.broker.Broker: void beginTransaction(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.TransactionId)>(v, v);
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.util.concurrent.ConcurrentMap getTransactions()>();
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setTransaction(org.apache.activemq.transaction.Transaction)>(v);
virtualinvoke v.<org.apache.activemq.command.Message: void setTransactionId(org.apache.activemq.command.TransactionId)>(v);
label:
return v;
}
private void commit(org.apache.activemq.command.LocalTransactionId, org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.Message v;
org.apache.activemq.command.LocalTransactionId v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.command.LocalTransactionId;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.Message;
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Broker getBroker()>();
interfaceinvoke v.<org.apache.activemq.broker.Broker: void commitTransaction(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.TransactionId,boolean)>(v, v, 1);
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.util.concurrent.ConcurrentMap getTransactions()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setTransaction(org.apache.activemq.transaction.Transaction)>(null);
virtualinvoke v.<org.apache.activemq.command.Message: void setTransactionId(org.apache.activemq.command.TransactionId)>(null);
label:
return;
}
protected boolean shouldDispatch(org.apache.activemq.broker.Broker, org.apache.activemq.command.Message, org.apache.activemq.broker.region.Destination) throws java.io.IOException
{
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.command.Message v;
int v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.broker.Broker;
v := @parameter: org.apache.activemq.command.Message;
v := @parameter: org.apache.activemq.broker.region.Destination;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix>;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(".*");
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("*");
if v != 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: java.lang.String getName()>();
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix>;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix>;
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>(".*");
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
goto label;
label:
v = 1;
label:
return v;
}
protected org.apache.activemq.command.ActiveMQDestination getQueueConsumersWildcard(org.apache.activemq.command.ActiveMQDestination)
{
java.lang.Throwable v;
org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor v;
org.apache.activemq.command.ActiveMQQueue v;
org.apache.activemq.command.ActiveMQDestination v;
java.lang.Object v;
java.lang.String v, v, v, v;
org.apache.activemq.util.LRUCache v, v, v;
v := @this: org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.util.LRUCache cache>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.util.LRUCache cache>;
v = virtualinvoke v.<org.apache.activemq.util.LRUCache: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new org.apache.activemq.command.ActiveMQQueue;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String prefix>;
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: java.lang.String getPhysicalName()>();
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: java.lang.String postfix>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, 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\u0001");
specialinvoke v.<org.apache.activemq.command.ActiveMQQueue: void <init>(java.lang.String)>(v);
v = v;
v = v.<org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor: org.apache.activemq.util.LRUCache cache>;
virtualinvoke v.<org.apache.activemq.util.LRUCache: 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:
return v;
catch java.lang.Throwable from label to label with label;
}
}