public class org.apache.activemq.network.DemandSubscription extends java.lang.Object
{
private static final org.slf4j.Logger LOG;
private final org.apache.activemq.command.ConsumerInfo remoteInfo;
private final org.apache.activemq.command.ConsumerInfo localInfo;
private final java.util.Set remoteSubsIds;
private final java.util.concurrent.atomic.AtomicInteger dispatched;
private final java.util.concurrent.atomic.AtomicBoolean activeWaiter;
private final java.util.Set durableRemoteSubs;
private final java.util.Set forcedDurableConsumers;
private org.apache.activemq.command.SubscriptionInfo localDurableSubscriber;
private org.apache.activemq.command.NetworkBridgeFilter networkBridgeFilter;
private boolean staticallyIncluded;
void <init>(org.apache.activemq.command.ConsumerInfo)
{
java.util.Set v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.network.DemandSubscription v;
java.util.concurrent.CopyOnWriteArraySet v, v, v;
org.apache.activemq.command.ConsumerId v;
java.util.concurrent.atomic.AtomicInteger v;
org.apache.activemq.command.ConsumerInfo v, v, v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.ConsumerInfo;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.CopyOnWriteArraySet;
specialinvoke v.<java.util.concurrent.CopyOnWriteArraySet: void <init>()>();
v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter> = v;
v = new java.util.concurrent.CopyOnWriteArraySet;
specialinvoke v.<java.util.concurrent.CopyOnWriteArraySet: void <init>()>();
v.<org.apache.activemq.network.DemandSubscription: java.util.Set durableRemoteSubs> = v;
v = new java.util.concurrent.CopyOnWriteArraySet;
specialinvoke v.<java.util.concurrent.CopyOnWriteArraySet: void <init>()>();
v.<org.apache.activemq.network.DemandSubscription: java.util.Set forcedDurableConsumers> = v;
v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo remoteInfo> = v;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerInfo copy()>();
v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo localInfo> = v;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo localInfo>;
virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: void setNetworkSubscription(boolean)>(1);
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
return;
}
public java.lang.String toString()
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
java.lang.String v;
org.apache.activemq.command.ConsumerId v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo localInfo>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.ConsumerId,java.util.Set)>(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[])>("DemandSub{\u,remotes:\u0001}");
return v;
}
public boolean add(org.apache.activemq.command.ConsumerId)
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerId v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.ConsumerId;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
return v;
}
public boolean remove(org.apache.activemq.command.ConsumerId)
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerId v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.ConsumerId;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
return v;
}
public java.util.Set getDurableRemoteSubs()
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set durableRemoteSubs>;
return v;
}
public boolean isEmpty()
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
return v;
}
public int size()
{
int v;
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set remoteSubsIds>;
v = interfaceinvoke v.<java.util.Set: int size()>();
return v;
}
public org.apache.activemq.command.ConsumerInfo getLocalInfo()
{
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo localInfo>;
return v;
}
public org.apache.activemq.command.ConsumerInfo getRemoteInfo()
{
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo remoteInfo>;
return v;
}
public boolean addForcedDurableConsumer(org.apache.activemq.command.ConsumerId)
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerId v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.ConsumerId;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set forcedDurableConsumers>;
v = interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
return v;
}
public boolean removeForcedDurableConsumer(org.apache.activemq.command.ConsumerId)
{
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.ConsumerId v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.ConsumerId;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set forcedDurableConsumers>;
v = interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
return v;
}
public int getForcedDurableConsumersSize()
{
int v;
java.util.Set v;
org.apache.activemq.network.DemandSubscription v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.Set forcedDurableConsumers>;
v = interfaceinvoke v.<java.util.Set: int size()>();
return v;
}
public void waitForCompletion()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v, v;
long v;
java.lang.Integer v, v;
org.apache.activemq.command.ConsumerId v;
java.util.concurrent.atomic.AtomicInteger v, v, v, v, v;
int v, v, v, v, v;
org.apache.activemq.command.ConsumerInfo v;
org.slf4j.Logger v, v;
org.apache.activemq.network.DemandSubscription v;
java.util.concurrent.TimeUnit v;
java.lang.InterruptedException v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v <= 0 goto label;
v = <org.apache.activemq.network.DemandSubscription: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.ConsumerInfo localInfo>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
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)>("Waiting for completion for sub: {}, dispatched: {}", v, v);
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v <= 0 goto label;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
entermonitor v;
label:
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMillis(long)>(30L);
virtualinvoke v.<java.lang.Object: void wait(long)>(v);
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.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v <= 0 goto label;
v = <org.apache.activemq.network.DemandSubscription: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("demand sub interrupted or timedout while waiting for outstanding responses, expect potentially {} duplicate forwards", v);
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void decrementOutstandingResponses()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v, v;
org.apache.activemq.network.DemandSubscription v;
java.util.concurrent.atomic.AtomicInteger v;
int v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
if v != 0 goto label;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
entermonitor v;
label:
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
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 boolean incrementOutstandingResponses()
{
java.util.concurrent.atomic.AtomicInteger v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.network.DemandSubscription v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicInteger dispatched>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = v.<org.apache.activemq.network.DemandSubscription: java.util.concurrent.atomic.AtomicBoolean activeWaiter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.network.DemandSubscription: void decrementOutstandingResponses()>();
return 0;
label:
return 1;
}
public org.apache.activemq.command.NetworkBridgeFilter getNetworkBridgeFilter()
{
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.NetworkBridgeFilter v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.NetworkBridgeFilter networkBridgeFilter>;
return v;
}
public void setNetworkBridgeFilter(org.apache.activemq.command.NetworkBridgeFilter)
{
org.apache.activemq.network.DemandSubscription v;
org.apache.activemq.command.NetworkBridgeFilter v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.NetworkBridgeFilter;
v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.NetworkBridgeFilter networkBridgeFilter> = v;
return;
}
public org.apache.activemq.command.SubscriptionInfo getLocalDurableSubscriber()
{
org.apache.activemq.command.SubscriptionInfo v;
org.apache.activemq.network.DemandSubscription v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.SubscriptionInfo localDurableSubscriber>;
return v;
}
public void setLocalDurableSubscriber(org.apache.activemq.command.SubscriptionInfo)
{
org.apache.activemq.command.SubscriptionInfo v;
org.apache.activemq.network.DemandSubscription v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: org.apache.activemq.command.SubscriptionInfo;
v.<org.apache.activemq.network.DemandSubscription: org.apache.activemq.command.SubscriptionInfo localDurableSubscriber> = v;
return;
}
public boolean isStaticallyIncluded()
{
org.apache.activemq.network.DemandSubscription v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v = v.<org.apache.activemq.network.DemandSubscription: boolean staticallyIncluded>;
return v;
}
public void setStaticallyIncluded(boolean)
{
org.apache.activemq.network.DemandSubscription v;
boolean v;
v := @this: org.apache.activemq.network.DemandSubscription;
v := @parameter: boolean;
v.<org.apache.activemq.network.DemandSubscription: boolean staticallyIncluded> = v;
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/network/DemandSubscription;");
<org.apache.activemq.network.DemandSubscription: org.slf4j.Logger LOG> = v;
return;
}
}