.class Lorg/apache/http/impl/execchain/ConnectionHolder; .super Ljava/lang/Object; .source "ConnectionHolder.java" # interfaces .implements Lorg/apache/http/conn/ConnectionReleaseTrigger; .implements Lorg/apache/http/concurrent/Cancellable; .implements Ljava/io/Closeable; # instance fields .field private final log:Lorg/apache/commons/logging/Log; .field private final managedConn:Lorg/apache/http/HttpClientConnection; .field private final manager:Lorg/apache/http/conn/HttpClientConnectionManager; .field private final released:Ljava/util/concurrent/atomic/AtomicBoolean; .field private volatile reusable:Z .field private volatile state:Ljava/lang/Object; .field private volatile tunit:Ljava/util/concurrent/TimeUnit; .field private volatile validDuration:J # direct methods .method public constructor (Lorg/apache/commons/logging/Log;Lorg/apache/http/conn/HttpClientConnectionManager;Lorg/apache/http/HttpClientConnection;)V .registers 4 .line 65 invoke-direct {p0}, Ljava/lang/Object;->()V .line 66 iput-object p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; .line 67 iput-object p2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; .line 68 iput-object p3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; .line 69 new-instance p1, Ljava/util/concurrent/atomic/AtomicBoolean; const/4 p2, 0x0 invoke-direct {p1, p2}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V iput-object p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->released:Ljava/util/concurrent/atomic/AtomicBoolean; return-void .end method .method private releaseConnection(Z)V .registers 10 .line 96 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->released:Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x0 const/4 v2, 0x1 invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z move-result v0 if-eqz v0, :cond_69 .line 97 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; monitor-enter v0 if-eqz p1, :cond_1f .line 99 :try_start_f iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; iget-object v3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->state:Ljava/lang/Object; iget-wide v4, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->validDuration:J iget-object v6, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->tunit:Ljava/util/concurrent/TimeUnit; invoke-interface/range {v1 .. v6}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V :try_end_1c .catchall {:try_start_f .. :try_end_1c} :catchall_1d goto :goto_58 :catchall_1d move-exception p1 goto :goto_67 .line 103 :cond_1f :try_start_1f iget-object p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; invoke-interface {p1}, Lorg/apache/http/HttpClientConnection;->close()V .line 104 iget-object p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; const-string v1, "Connection discarded" invoke-interface {p1, v1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :try_end_2b .catch Ljava/io/IOException; {:try_start_1f .. :try_end_2b} :catch_3a .catchall {:try_start_1f .. :try_end_2b} :catchall_38 .line 110 :try_start_2b iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v7, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v4, 0x0 const-wide/16 v5, 0x0 invoke-interface/range {v2 .. v7}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V :try_end_37 .catchall {:try_start_2b .. :try_end_37} :catchall_1d goto :goto_58 :catchall_38 move-exception p1 goto :goto_5a :catch_3a move-exception p1 .line 106 :try_start_3b iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; invoke-interface {v1}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v1 if-eqz v1, :cond_4c .line 107 iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; invoke-virtual {p1}, Ljava/io/IOException;->getMessage()Ljava/lang/String; move-result-object v2 invoke-interface {v1, v2, p1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;Ljava/lang/Throwable;)V :try_end_4c .catchall {:try_start_3b .. :try_end_4c} :catchall_38 .line 110 :cond_4c :try_start_4c iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v6, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v3, 0x0 const-wide/16 v4, 0x0 invoke-interface/range {v1 .. v6}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V .line 114 :goto_58 monitor-exit v0 goto :goto_69 .line 110 :goto_5a iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v6, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v3, 0x0 const-wide/16 v4, 0x0 invoke-interface/range {v1 .. v6}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V throw p1 .line 114 :goto_67 monitor-exit v0 :try_end_68 .catchall {:try_start_4c .. :try_end_68} :catchall_1d throw p1 :cond_69 :goto_69 return-void .end method # virtual methods .method public abortConnection()V .registers 10 .line 125 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->released:Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x0 const/4 v2, 0x1 invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z move-result v0 if-eqz v0, :cond_58 .line 126 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; monitor-enter v0 .line 128 :try_start_d iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; invoke-interface {v1}, Lorg/apache/http/HttpClientConnection;->shutdown()V .line 129 iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; const-string v2, "Connection discarded" invoke-interface {v1, v2}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :try_end_19 .catch Ljava/io/IOException; {:try_start_d .. :try_end_19} :catch_28 .catchall {:try_start_d .. :try_end_19} :catchall_26 .line 135 :try_start_19 iget-object v3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v4, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v8, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v5, 0x0 const-wide/16 v6, 0x0 invoke-interface/range {v3 .. v8}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V :try_end_25 .catchall {:try_start_19 .. :try_end_25} :catchall_55 goto :goto_46 :catchall_26 move-exception v1 goto :goto_48 :catch_28 move-exception v1 .line 131 :try_start_29 iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; invoke-interface {v2}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v2 if-eqz v2, :cond_3a .line 132 iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; invoke-virtual {v1}, Ljava/io/IOException;->getMessage()Ljava/lang/String; move-result-object v3 invoke-interface {v2, v3, v1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;Ljava/lang/Throwable;)V :try_end_3a .catchall {:try_start_29 .. :try_end_3a} :catchall_26 .line 135 :cond_3a :try_start_3a iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v7, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v4, 0x0 const-wide/16 v5, 0x0 invoke-interface/range {v2 .. v7}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V .line 138 :goto_46 monitor-exit v0 goto :goto_58 .line 135 :goto_48 iget-object v2, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->manager:Lorg/apache/http/conn/HttpClientConnectionManager; iget-object v3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; sget-object v7, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; const/4 v4, 0x0 const-wide/16 v5, 0x0 invoke-interface/range {v2 .. v7}, Lorg/apache/http/conn/HttpClientConnectionManager;->releaseConnection(Lorg/apache/http/HttpClientConnection;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V throw v1 :catchall_55 move-exception v1 .line 138 monitor-exit v0 :try_end_57 .catchall {:try_start_3a .. :try_end_57} :catchall_55 throw v1 :cond_58 :goto_58 return-void .end method .method public cancel()Z .registers 4 .line 144 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->released:Ljava/util/concurrent/atomic/AtomicBoolean; invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z move-result v0 .line 145 iget-object v1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->log:Lorg/apache/commons/logging/Log; const-string v2, "Cancelling request execution" invoke-interface {v1, v2}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 146 invoke-virtual {p0}, Lorg/apache/http/impl/execchain/ConnectionHolder;->abortConnection()V xor-int/lit8 v0, v0, 0x1 return v0 .end method .method public close()V .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const/4 v0, 0x0 .line 156 invoke-direct {p0, v0}, Lorg/apache/http/impl/execchain/ConnectionHolder;->releaseConnection(Z)V return-void .end method .method public isReleased()Z .registers 2 .line 151 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->released:Ljava/util/concurrent/atomic/AtomicBoolean; invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z move-result v0 return v0 .end method .method public isReusable()Z .registers 2 .line 73 iget-boolean v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->reusable:Z return v0 .end method .method public markNonReusable()V .registers 2 const/4 v0, 0x0 .line 81 iput-boolean v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->reusable:Z return-void .end method .method public markReusable()V .registers 2 const/4 v0, 0x1 .line 77 iput-boolean v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->reusable:Z return-void .end method .method public releaseConnection()V .registers 2 .line 120 iget-boolean v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->reusable:Z invoke-direct {p0, v0}, Lorg/apache/http/impl/execchain/ConnectionHolder;->releaseConnection(Z)V return-void .end method .method public setState(Ljava/lang/Object;)V .registers 2 .line 85 iput-object p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->state:Ljava/lang/Object; return-void .end method .method public setValidFor(JLjava/util/concurrent/TimeUnit;)V .registers 5 .line 89 iget-object v0, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->managedConn:Lorg/apache/http/HttpClientConnection; monitor-enter v0 .line 90 :try_start_3 iput-wide p1, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->validDuration:J .line 91 iput-object p3, p0, Lorg/apache/http/impl/execchain/ConnectionHolder;->tunit:Ljava/util/concurrent/TimeUnit; .line 92 monitor-exit v0 return-void :catchall_9 move-exception p1 monitor-exit v0 :try_end_b .catchall {:try_start_3 .. :try_end_b} :catchall_9 throw p1 .end method