.class public Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool; .super Ljava/lang/Object; .source "RouteSpecificPool.java" # annotations .annotation runtime Ljava/lang/Deprecated; .end annotation # instance fields .field protected final connPerRoute:Lorg/apache/http/conn/params/ConnPerRoute; .field protected final freeEntries:Ljava/util/LinkedList; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/LinkedList<", "Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;", ">;" } .end annotation .end field .field private final log:Lorg/apache/commons/logging/Log; .field protected final maxEntries:I .field protected numEntries:I .field protected final route:Lorg/apache/http/conn/routing/HttpRoute; .field protected final waitingThreads:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "Lorg/apache/http/impl/conn/tsccm/WaitingThread;", ">;" } .end annotation .end field # direct methods .method public constructor (Lorg/apache/http/conn/routing/HttpRoute;I)V .registers 4 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 83 invoke-direct {p0}, Ljava/lang/Object;->()V .line 56 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 invoke-static {v0}, Lorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; move-result-object v0 iput-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->log:Lorg/apache/commons/logging/Log; .line 84 iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; .line 85 iput p2, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->maxEntries:I .line 86 new-instance p1, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool$1; invoke-direct {p1, p0}, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool$1;->(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->connPerRoute:Lorg/apache/http/conn/params/ConnPerRoute; .line 92 new-instance p1, Ljava/util/LinkedList; invoke-direct {p1}, Ljava/util/LinkedList;->()V iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; .line 93 new-instance p1, Ljava/util/LinkedList; invoke-direct {p1}, Ljava/util/LinkedList;->()V iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; const/4 p1, 0x0 .line 94 iput p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I return-void .end method .method public constructor (Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/conn/params/ConnPerRoute;)V .registers 4 .line 104 invoke-direct {p0}, Ljava/lang/Object;->()V .line 56 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 invoke-static {v0}, Lorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; move-result-object v0 iput-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->log:Lorg/apache/commons/logging/Log; .line 105 iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; .line 106 iput-object p2, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->connPerRoute:Lorg/apache/http/conn/params/ConnPerRoute; .line 107 invoke-interface {p2, p1}, Lorg/apache/http/conn/params/ConnPerRoute;->getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I move-result p1 iput p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->maxEntries:I .line 108 new-instance p1, Ljava/util/LinkedList; invoke-direct {p1}, Ljava/util/LinkedList;->()V iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; .line 109 new-instance p1, Ljava/util/LinkedList; invoke-direct {p1}, Ljava/util/LinkedList;->()V iput-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; const/4 p1, 0x0 .line 110 iput p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I return-void .end method # virtual methods .method public allocEntry(Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; .registers 5 .line 175 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {v0}, Ljava/util/LinkedList;->isEmpty()Z move-result v0 if-nez v0, :cond_32 .line 176 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {v0}, Ljava/util/LinkedList;->size()I move-result v1 invoke-virtual {v0, v1}, Ljava/util/LinkedList;->listIterator(I)Ljava/util/ListIterator; move-result-object v0 .line 177 :cond_12 invoke-interface {v0}, Ljava/util/ListIterator;->hasPrevious()Z move-result v1 if-eqz v1, :cond_32 .line 178 invoke-interface {v0}, Ljava/util/ListIterator;->previous()Ljava/lang/Object; move-result-object v1 check-cast v1, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; .line 179 invoke-virtual {v1}, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getState()Ljava/lang/Object; move-result-object v2 if-eqz v2, :cond_2e invoke-virtual {v1}, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getState()Ljava/lang/Object; move-result-object v2 invoke-static {p1, v2}, Lorg/apache/http/util/LangUtils;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_12 .line 180 :cond_2e invoke-interface {v0}, Ljava/util/ListIterator;->remove()V return-object v1 .line 185 :cond_32 invoke-virtual {p0}, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->getCapacity()I move-result p1 if-nez p1, :cond_5c iget-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {p1}, Ljava/util/LinkedList;->isEmpty()Z move-result p1 if-nez p1, :cond_5c .line 186 iget-object p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {p1}, Ljava/util/LinkedList;->remove()Ljava/lang/Object; move-result-object p1 check-cast p1, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; .line 187 invoke-virtual {p1}, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->shutdownEntry()V .line 188 invoke-virtual {p1}, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getConnection()Lorg/apache/http/conn/OperatedClientConnection; move-result-object v0 .line 190 :try_start_4f invoke-interface {v0}, Lorg/apache/http/conn/OperatedClientConnection;->close()V :try_end_52 .catch Ljava/io/IOException; {:try_start_4f .. :try_end_52} :catch_53 goto :goto_5b :catch_53 move-exception v0 .line 192 iget-object v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->log:Lorg/apache/commons/logging/Log; const-string v2, "I/O error closing connection" invoke-interface {v1, v2, v0}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;Ljava/lang/Throwable;)V :goto_5b return-object p1 :cond_5c const/4 p1, 0x0 return-object p1 .end method .method public createdEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V .registers 3 .line 228 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; invoke-virtual {p1}, Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getPlannedRoute()Lorg/apache/http/conn/routing/HttpRoute; move-result-object p1 invoke-virtual {v0, p1}, Lorg/apache/http/conn/routing/HttpRoute;->equals(Ljava/lang/Object;)Z move-result p1 const-string v0, "Entry not planned for this pool" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->check(ZLjava/lang/String;)V .line 229 iget p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I add-int/lit8 p1, p1, 0x1 iput p1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I return-void .end method .method public deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)Z .registers 3 .line 245 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {v0, p1}, Ljava/util/LinkedList;->remove(Ljava/lang/Object;)Z move-result p1 if-eqz p1, :cond_e .line 247 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I add-int/lit8 v0, v0, -0x1 iput v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I :cond_e return p1 .end method .method public dropEntry()V .registers 4 .line 260 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I const/4 v1, 0x1 if-lez v0, :cond_7 move v0, v1 goto :goto_8 :cond_7 const/4 v0, 0x0 :goto_8 const-string v2, "There is no entry that could be dropped" invoke-static {v0, v2}, Lorg/apache/http/util/Asserts;->check(ZLjava/lang/String;)V .line 261 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I sub-int/2addr v0, v1 iput v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I return-void .end method .method public freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V .registers 4 .line 207 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I const/4 v1, 0x1 if-lt v0, v1, :cond_2a .line 211 iget-object v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {v1}, Ljava/util/LinkedList;->size()I move-result v1 if-le v0, v1, :cond_13 .line 215 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntries:Ljava/util/LinkedList; invoke-virtual {v0, p1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z return-void .line 212 :cond_13 new-instance p1, Ljava/lang/IllegalStateException; new-instance v0, Ljava/lang/StringBuilder; const-string v1, "No entry allocated from this pool. " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V iget-object v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw p1 .line 208 :cond_2a new-instance p1, Ljava/lang/IllegalStateException; new-instance v0, Ljava/lang/StringBuilder; const-string v1, "No entry created for this pool. " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V iget-object v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw p1 .end method .method public getCapacity()I .registers 3 .line 153 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->connPerRoute:Lorg/apache/http/conn/params/ConnPerRoute; iget-object v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; invoke-interface {v0, v1}, Lorg/apache/http/conn/params/ConnPerRoute;->getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I move-result v0 iget v1, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I sub-int/2addr v0, v1 return v0 .end method .method public final getEntryCount()I .registers 2 .line 165 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I return v0 .end method .method public final getMaxEntries()I .registers 2 .line 130 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->maxEntries:I return v0 .end method .method public final getRoute()Lorg/apache/http/conn/routing/HttpRoute; .registers 2 .line 120 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->route:Lorg/apache/http/conn/routing/HttpRoute; return-object v0 .end method .method public hasThread()Z .registers 2 .line 286 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->isEmpty()Z move-result v0 xor-int/lit8 v0, v0, 0x1 return v0 .end method .method public isUnused()Z .registers 3 .line 143 iget v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->numEntries:I const/4 v1, 0x1 if-ge v0, v1, :cond_e iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->isEmpty()Z move-result v0 if-eqz v0, :cond_e goto :goto_f :cond_e const/4 v1, 0x0 :goto_f return v1 .end method .method public nextThread()Lorg/apache/http/impl/conn/tsccm/WaitingThread; .registers 2 .line 296 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->peek()Ljava/lang/Object; move-result-object v0 check-cast v0, Lorg/apache/http/impl/conn/tsccm/WaitingThread; return-object v0 .end method .method public queueThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V .registers 3 .line 274 const-string v0, "Waiting thread" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 275 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; invoke-interface {v0, p1}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z return-void .end method .method public removeThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V .registers 3 if-nez p1, :cond_3 return-void .line 310 :cond_3 iget-object v0, p0, Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->waitingThreads:Ljava/util/Queue; invoke-interface {v0, p1}, Ljava/util/Queue;->remove(Ljava/lang/Object;)Z return-void .end method