class org.apache.hc.core.pool.LaxConnPool$PerRoutePool extends java.lang.Object
{
private final java.lang.Object route;
private final org.apache.hc.core.util.TimeValue timeToLive;
private final org.apache.hc.core.pool.PoolReusePolicy policy;
private final org.apache.hc.core.pool.DisposalCallback disposalCallback;
private final org.apache.hc.core.pool.ConnPoolListener connPoolListener;
private final org.apache.hc.core.pool.ConnPoolStats connPoolStats;
private final java.util.concurrent.ConcurrentMap leased;
private final java.util.Deque available;
private final java.util.Deque pending;
private final java.util.concurrent.atomic.AtomicBoolean terminated;
private final java.util.concurrent.atomic.AtomicInteger allocated;
private final java.util.concurrent.atomic.AtomicLong releaseSeqNum;
private volatile int max;
void <init>(java.lang.Object, int, org.apache.hc.core.util.TimeValue, org.apache.hc.core.pool.PoolReusePolicy, org.apache.hc.core.pool.ConnPoolStats, org.apache.hc.core.pool.DisposalCallback, org.apache.hc.core.pool.ConnPoolListener)
{
org.apache.hc.core.util.TimeValue v;
org.apache.hc.core.pool.DisposalCallback v;
org.apache.hc.core.pool.PoolReusePolicy v;
java.util.concurrent.ConcurrentHashMap v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.ConcurrentLinkedDeque v, v;
org.apache.hc.core.pool.ConnPoolListener v;
java.util.concurrent.atomic.AtomicLong v;
java.util.concurrent.atomic.AtomicInteger v;
int v;
java.lang.Object v;
org.apache.hc.core.pool.ConnPoolStats v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: org.apache.hc.core.util.TimeValue;
v := @parameter: org.apache.hc.core.pool.PoolReusePolicy;
v := @parameter: org.apache.hc.core.pool.ConnPoolStats;
v := @parameter: org.apache.hc.core.pool.DisposalCallback;
v := @parameter: org.apache.hc.core.pool.ConnPoolListener;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.util.TimeValue timeToLive> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolReusePolicy policy> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolStats connPoolStats> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.DisposalCallback disposalCallback> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolListener connPoolListener> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased> = v;
v = new java.util.concurrent.ConcurrentLinkedDeque;
specialinvoke v.<java.util.concurrent.ConcurrentLinkedDeque: void <init>()>();
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available> = v;
v = new java.util.concurrent.ConcurrentLinkedDeque;
specialinvoke v.<java.util.concurrent.ConcurrentLinkedDeque: void <init>()>();
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicBoolean terminated> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicInteger allocated> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(0L);
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum> = v;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: int max> = v;
return;
}
public void shutdown(org.apache.hc.core.io.CloseMode)
{
java.util.Iterator v;
java.util.Set v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.Deque v, v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.hc.core.io.CloseMode v;
java.lang.Object v, v, v, v;
boolean v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.io.CloseMode;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicBoolean terminated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = interfaceinvoke v.<java.util.Deque: java.lang.Object poll()>();
if v == null goto label;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: java.lang.Object getReference()>();
virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: void discardConnection(org.apache.hc.core.io.CloseMode)>(v);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set keySet()>();
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()>();
virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: void discardConnection(org.apache.hc.core.io.CloseMode)>(v);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: java.lang.Object poll()>();
if v == null goto label;
virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean cancel()>();
goto label;
label:
return;
}
private org.apache.hc.core.pool.PoolEntry createPoolEntry()
{
org.apache.hc.core.util.TimeValue v;
org.apache.hc.core.pool.DisposalCallback v;
org.apache.hc.core.pool.PoolEntry v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v;
java.lang.Object v;
boolean v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: int max>;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicInteger allocated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v >= v goto label;
v = v + 1;
goto label;
label:
v = v;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicInteger allocated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(v, v);
if v == 0 goto label;
if v >= v goto label;
v = new org.apache.hc.core.pool.PoolEntry;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.util.TimeValue timeToLive>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.DisposalCallback disposalCallback>;
specialinvoke v.<org.apache.hc.core.pool.PoolEntry: void <init>(java.lang.Object,org.apache.hc.core.util.TimeValue,org.apache.hc.core.pool.DisposalCallback)>(v, v, v);
goto label;
label:
v = null;
label:
return v;
}
private void deallocatePoolEntry()
{
java.util.concurrent.atomic.AtomicInteger v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicInteger allocated>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
return;
}
private void addLeased(org.apache.hc.core.pool.PoolEntry)
{
java.lang.IllegalStateException v;
org.apache.hc.core.pool.PoolEntry v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.pool.ConnPoolListener v, v;
java.util.concurrent.ConcurrentMap v;
java.lang.Boolean v;
java.lang.Object v, v;
org.apache.hc.core.pool.ConnPoolStats v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.pool.PoolEntry;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Pool entry already present in the set of leased entries");
throw v;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolListener connPoolListener>;
if v == null goto label;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolListener connPoolListener>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolStats connPoolStats>;
interfaceinvoke v.<org.apache.hc.core.pool.ConnPoolListener: void onLease(java.lang.Object,org.apache.hc.core.pool.ConnPoolStats)>(v, v);
label:
return;
}
private void removeLeased(org.apache.hc.core.pool.PoolEntry)
{
java.lang.IllegalStateException v;
org.apache.hc.core.pool.PoolEntry v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.pool.ConnPoolListener v, v;
java.util.concurrent.ConcurrentMap v;
java.lang.Boolean v;
java.lang.Object v;
org.apache.hc.core.pool.ConnPoolStats v;
boolean v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.pool.PoolEntry;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolListener connPoolListener>;
if v == null goto label;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolListener connPoolListener>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.ConnPoolStats connPoolStats>;
interfaceinvoke v.<org.apache.hc.core.pool.ConnPoolListener: void onRelease(java.lang.Object,org.apache.hc.core.pool.ConnPoolStats)>(v, v);
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: boolean remove(java.lang.Object,java.lang.Object)>(v, v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Pool entry is not present in the set of leased entries");
throw v;
label:
return;
}
private org.apache.hc.core.pool.PoolEntry getAvailableEntry(java.lang.Object)
{
java.util.Iterator v;
java.util.Deque v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.util.Deadline v;
org.apache.hc.core.io.CloseMode v, v;
java.lang.Object v, v, v, v;
boolean v, v, v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: java.lang.Object;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = interfaceinvoke v.<java.util.Deque: 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.concurrent.atomic.AtomicMarkableReference: java.lang.Object getReference()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: boolean compareAndSet(java.lang.Object,java.lang.Object,boolean,boolean)>(v, v, 0, 1);
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: org.apache.hc.core.util.Deadline getExpiryDeadline()>();
v = virtualinvoke v.<org.apache.hc.core.util.Deadline: boolean isExpired()>();
if v == 0 goto label;
v = <org.apache.hc.core.io.CloseMode: org.apache.hc.core.io.CloseMode GRACEFUL>;
virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: void discardConnection(org.apache.hc.core.io.CloseMode)>(v);
label:
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: java.lang.Object getState()>();
v = staticinvoke <org.apache.hc.core.util.LangUtils: boolean equals(java.lang.Object,java.lang.Object)>(v, v);
if v != 0 goto label;
v = <org.apache.hc.core.io.CloseMode: org.apache.hc.core.io.CloseMode GRACEFUL>;
virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: void discardConnection(org.apache.hc.core.io.CloseMode)>(v);
label:
return v;
label:
return null;
}
public java.util.concurrent.Future lease(java.lang.Object, org.apache.hc.core.util.Timeout, org.apache.hc.core.concurrent.FutureCallback)
{
org.apache.hc.core.pool.LaxConnPool$PerRoutePool$1 v;
org.apache.hc.core.pool.PoolEntry v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v;
java.util.Deque v, v;
byte v;
org.apache.hc.core.concurrent.FutureCallback v;
boolean v, v, v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.util.Timeout v;
java.util.concurrent.atomic.AtomicLong v, v;
org.apache.hc.core.pool.LaxConnPool$LeaseRequest v;
java.lang.Object v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: java.lang.Object;
v := @parameter: org.apache.hc.core.util.Timeout;
v := @parameter: org.apache.hc.core.concurrent.FutureCallback;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicBoolean terminated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <org.apache.hc.core.util.Asserts: void check(boolean,java.lang.String)>(v, "Connection pool shut down");
v = new org.apache.hc.core.pool.LaxConnPool$PerRoutePool$1;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool$1: void <init>(org.apache.hc.core.pool.LaxConnPool$PerRoutePool,org.apache.hc.core.concurrent.FutureCallback)>(v, v);
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = null;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: boolean isEmpty()>();
if v == 0 goto label;
v = specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolEntry getAvailableEntry(java.lang.Object)>(v);
if v != null goto label;
v = specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolEntry createPoolEntry()>();
label:
if v == null goto label;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void addLeased(org.apache.hc.core.pool.PoolEntry)>(v);
virtualinvoke v.<org.apache.hc.core.concurrent.BasicFuture: boolean completed(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = new org.apache.hc.core.pool.LaxConnPool$LeaseRequest;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: void <init>(java.lang.Object,org.apache.hc.core.util.Timeout,org.apache.hc.core.concurrent.BasicFuture)>(v, v, v);
interfaceinvoke v.<java.util.Deque: boolean add(java.lang.Object)>(v);
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v == 0 goto label;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void servicePendingRequest()>();
label:
return v;
}
public void release(org.apache.hc.core.pool.PoolEntry, boolean)
{
java.lang.IllegalStateException v;
org.apache.hc.core.pool.PoolEntry v;
java.util.Deque v, v;
int[] v;
org.apache.hc.core.util.Deadline v;
org.apache.hc.core.io.CloseMode v;
int v, v;
java.lang.String v;
boolean v, v, v;
org.apache.hc.core.pool.PoolReusePolicy v, v;
java.util.concurrent.atomic.AtomicMarkableReference v, v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.atomic.AtomicLong v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.pool.PoolEntry;
v := @parameter: boolean;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void removeLeased(org.apache.hc.core.pool.PoolEntry)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: org.apache.hc.core.util.Deadline getExpiryDeadline()>();
v = virtualinvoke v.<org.apache.hc.core.util.Deadline: boolean isExpired()>();
if v == 0 goto label;
label:
v = <org.apache.hc.core.io.CloseMode: org.apache.hc.core.io.CloseMode GRACEFUL>;
virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: void discardConnection(org.apache.hc.core.io.CloseMode)>(v);
label:
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: boolean hasConnection()>();
if v == 0 goto label;
v = <org.apache.hc.core.pool.LaxConnPool$3: int[] $SwitchMap$org$apache$hc$core5$pool$PoolReusePolicy>;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolReusePolicy policy>;
v = virtualinvoke v.<org.apache.hc.core.pool.PoolReusePolicy: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = new java.util.concurrent.atomic.AtomicMarkableReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: void <init>(java.lang.Object,boolean)>(v, 0);
interfaceinvoke v.<java.util.Deque: void addFirst(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = new java.util.concurrent.atomic.AtomicMarkableReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: void <init>(java.lang.Object,boolean)>(v, 0);
interfaceinvoke v.<java.util.Deque: void addLast(java.lang.Object)>(v);
goto label;
label:
v = new java.lang.IllegalStateException;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolReusePolicy policy>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.hc.core.pool.PoolReusePolicy)>(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[])>("Unexpected ConnPoolPolicy value: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void deallocatePoolEntry()>();
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long incrementAndGet()>();
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void servicePendingRequest()>();
return;
}
private void servicePendingRequest()
{
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = <org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy: org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy FIRST_SUCCESSFUL>;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void servicePendingRequests(org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy)>(v);
return;
}
private void servicePendingRequests(org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy)
{
org.apache.hc.core.pool.PoolEntry v;
long v, v;
java.util.Deque v, v;
byte v;
org.apache.hc.core.util.Deadline v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy v, v;
org.apache.hc.core.util.DeadlineTimeoutException v;
boolean v, v, v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.atomic.AtomicLong v, v;
java.lang.Object v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: java.lang.Object poll()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean isDone()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: java.lang.Object getState()>();
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: org.apache.hc.core.util.Deadline getDeadline()>();
v = virtualinvoke v.<org.apache.hc.core.util.Deadline: boolean isExpired()>();
if v == 0 goto label;
v = staticinvoke <org.apache.hc.core.util.DeadlineTimeoutException: org.apache.hc.core.util.DeadlineTimeoutException 'from'(org.apache.hc.core.util.Deadline)>(v);
virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean failed(java.lang.Exception)>(v);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolEntry getAvailableEntry(java.lang.Object)>(v);
if v != null goto label;
v = specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: org.apache.hc.core.pool.PoolEntry createPoolEntry()>();
label:
if v == null goto label;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void addLeased(org.apache.hc.core.pool.PoolEntry)>(v);
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean completed(org.apache.hc.core.pool.PoolEntry)>(v);
if v != 0 goto label;
virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void release(org.apache.hc.core.pool.PoolEntry,boolean)>(v, 1);
label:
v = <org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy: org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy FIRST_SUCCESSFUL>;
if v != v goto label;
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
interfaceinvoke v.<java.util.Deque: void addFirst(java.lang.Object)>(v);
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v != 0 goto label;
label:
return;
}
public void validatePendingRequests()
{
java.util.Iterator v;
org.apache.hc.core.concurrent.BasicFuture v;
java.util.Deque v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
org.apache.hc.core.util.Deadline v;
org.apache.hc.core.util.DeadlineTimeoutException v;
java.lang.Object v;
boolean v, v, v, v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: 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.hc.core.pool.LaxConnPool$LeaseRequest: org.apache.hc.core.concurrent.BasicFuture getFuture()>();
v = virtualinvoke v.<org.apache.hc.core.concurrent.BasicFuture: boolean isCancelled()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean isDone()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: org.apache.hc.core.util.Deadline getDeadline()>();
v = virtualinvoke v.<org.apache.hc.core.util.Deadline: boolean isExpired()>();
if v == 0 goto label;
v = staticinvoke <org.apache.hc.core.util.DeadlineTimeoutException: org.apache.hc.core.util.DeadlineTimeoutException 'from'(org.apache.hc.core.util.Deadline)>(v);
virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean failed(java.lang.Exception)>(v);
label:
v = virtualinvoke v.<org.apache.hc.core.pool.LaxConnPool$LeaseRequest: boolean isDone()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
}
public final java.lang.Object getRoute()
{
java.lang.Object v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route>;
return v;
}
public int getMax()
{
int v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: int max>;
return v;
}
public void setMax(int)
{
int v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: int;
v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: int max> = v;
return;
}
public int getPendingCount()
{
int v;
java.util.Deque v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: int size()>();
return v;
}
public int getLeasedCount()
{
int v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
return v;
}
public int getAvailableCount()
{
int v;
java.util.Deque v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = interfaceinvoke v.<java.util.Deque: int size()>();
return v;
}
public void enumAvailable(org.apache.hc.core.function.Callback)
{
java.util.Iterator v;
org.apache.hc.core.function.Callback v;
java.util.Deque v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy v;
java.lang.Object v, v;
boolean v, v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.function.Callback;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = interfaceinvoke v.<java.util.Deque: 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.concurrent.atomic.AtomicMarkableReference: java.lang.Object getReference()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: boolean compareAndSet(java.lang.Object,java.lang.Object,boolean,boolean)>(v, v, 0, 1);
if v == 0 goto label;
interfaceinvoke v.<org.apache.hc.core.function.Callback: void execute(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: boolean hasConnection()>();
if v != 0 goto label;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void deallocatePoolEntry()>();
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
virtualinvoke v.<java.util.concurrent.atomic.AtomicMarkableReference: void set(java.lang.Object,boolean)>(v, 0);
goto label;
label:
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.atomic.AtomicLong releaseSeqNum>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long incrementAndGet()>();
v = <org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy: org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy ALL>;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void servicePendingRequests(org.apache.hc.core.pool.LaxConnPool$PerRoutePool$RequestServiceStrategy)>(v);
return;
}
public void enumLeased(org.apache.hc.core.function.Callback)
{
java.util.Iterator v;
org.apache.hc.core.function.Callback v;
java.util.Set v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.ConcurrentMap v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v := @parameter: org.apache.hc.core.function.Callback;
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set keySet()>();
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()>();
interfaceinvoke v.<org.apache.hc.core.function.Callback: void execute(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.hc.core.pool.PoolEntry: boolean hasConnection()>();
if v != 0 goto label;
specialinvoke v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: void deallocatePoolEntry()>();
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
}
public java.lang.String toString()
{
java.util.Deque v, v;
org.apache.hc.core.pool.LaxConnPool$PerRoutePool v;
java.util.concurrent.ConcurrentMap v;
int v, v, v;
java.lang.Object v;
java.lang.StringBuilder v;
java.lang.String v;
v := @this: org.apache.hc.core.pool.LaxConnPool$PerRoutePool;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("[route: ");
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.lang.Object route>;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("][leased: ");
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.concurrent.ConcurrentMap leased>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("][available: ");
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque available>;
v = interfaceinvoke v.<java.util.Deque: int size()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("][pending: ");
v = v.<org.apache.hc.core.pool.LaxConnPool$PerRoutePool: java.util.Deque pending>;
v = interfaceinvoke v.<java.util.Deque: int size()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
}