c.smali
.class final Lcom/subgraph/orchid/b/c;
.super Ljava/lang/Object;
.source "ConnectionCacheImpl.java"
# interfaces
.implements Ljava/util/concurrent/Callable;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Ljava/util/concurrent/Callable",
"<",
"Lcom/subgraph/orchid/b/h;",
">;"
}
.end annotation
# instance fields
.field private synthetic bFt:Lcom/subgraph/orchid/b/a;
.field private final bFu:Z
.field private final router:Lcom/subgraph/orchid/v;
# direct methods
.method constructor <init>(Lcom/subgraph/orchid/b/a;Lcom/subgraph/orchid/v;Z)V
.registers 4
.prologue
.line 40
iput-object p1, p0, Lcom/subgraph/orchid/b/c;->bFt:Lcom/subgraph/orchid/b/a;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 41
iput-object p2, p0, Lcom/subgraph/orchid/b/c;->router:Lcom/subgraph/orchid/v;
.line 42
iput-boolean p3, p0, Lcom/subgraph/orchid/b/c;->bFu:Z
.line 43
return-void
.end method
.method private LE()Lcom/subgraph/orchid/b/h;
.registers 7
.prologue
.line 46
iget-object v0, p0, Lcom/subgraph/orchid/b/c;->bFt:Lcom/subgraph/orchid/b/a;
invoke-static {v0}, Lcom/subgraph/orchid/b/a;->a(Lcom/subgraph/orchid/b/a;)Lcom/subgraph/orchid/b/i;
move-result-object v0
invoke-virtual {v0}, Lcom/subgraph/orchid/b/i;->LR()Ljavax/net/ssl/SSLSocket;
move-result-object v2
.line 47
new-instance v0, Lcom/subgraph/orchid/b/h;
iget-object v1, p0, Lcom/subgraph/orchid/b/c;->bFt:Lcom/subgraph/orchid/b/a;
invoke-static {v1}, Lcom/subgraph/orchid/b/a;->b(Lcom/subgraph/orchid/b/a;)Lcom/subgraph/orchid/TorConfig;
move-result-object v1
iget-object v3, p0, Lcom/subgraph/orchid/b/c;->router:Lcom/subgraph/orchid/v;
iget-object v4, p0, Lcom/subgraph/orchid/b/c;->bFt:Lcom/subgraph/orchid/b/a;
invoke-static {v4}, Lcom/subgraph/orchid/b/a;->c(Lcom/subgraph/orchid/b/a;)Lcom/subgraph/orchid/circuits/u;
move-result-object v4
iget-boolean v5, p0, Lcom/subgraph/orchid/b/c;->bFu:Z
invoke-direct/range {v0 .. v5}, Lcom/subgraph/orchid/b/h;-><init>(Lcom/subgraph/orchid/TorConfig;Ljavax/net/ssl/SSLSocket;Lcom/subgraph/orchid/v;Lcom/subgraph/orchid/circuits/u;Z)V
.line 1119
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bFG:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1121
:try_start_24
iget-boolean v1, v0, Lcom/subgraph/orchid/b/h;->IM:Z
:try_end_26
.catchall {:try_start_24 .. :try_end_26} :catchall_93
if-eqz v1, :cond_2e
.line 1140
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bFG:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 49
:goto_2d
return-object v0
.line 1155
:cond_2e
:try_start_2e
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
if-eqz v1, :cond_3c
.line 1156
iget-boolean v1, v0, Lcom/subgraph/orchid/b/h;->bFu:Z
if-eqz v1, :cond_84
.line 1157
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
const/4 v2, 0x5
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
.line 1163
:cond_3c
:goto_3c
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bFw:Ljavax/net/ssl/SSLSocket;
iget-object v2, v0, Lcom/subgraph/orchid/b/h;->router:Lcom/subgraph/orchid/v;
invoke-static {v2}, Lcom/subgraph/orchid/b/h;->k(Lcom/subgraph/orchid/v;)Ljava/net/SocketAddress;
move-result-object v2
const/16 v3, 0x1388
invoke-virtual {v1, v2, v3}, Ljavax/net/ssl/SSLSocket;->connect(Ljava/net/SocketAddress;I)V
.line 1165
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
if-eqz v1, :cond_58
.line 1166
iget-boolean v1, v0, Lcom/subgraph/orchid/b/h;->bFu:Z
if-eqz v1, :cond_9a
.line 1167
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
const/16 v2, 0xa
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
.line 1146
:cond_58
:goto_58
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBr:Lcom/subgraph/orchid/TorConfig;
iget-object v2, v0, Lcom/subgraph/orchid/b/h;->bFw:Ljavax/net/ssl/SSLSocket;
invoke-static {v1, v0, v2}, Lcom/subgraph/orchid/b/d;->a(Lcom/subgraph/orchid/TorConfig;Lcom/subgraph/orchid/b/h;Ljavax/net/ssl/SSLSocket;)Lcom/subgraph/orchid/b/d;
move-result-object v1
.line 1147
iget-object v2, v0, Lcom/subgraph/orchid/b/h;->bFw:Ljavax/net/ssl/SSLSocket;
invoke-virtual {v2}, Ljavax/net/ssl/SSLSocket;->getInputStream()Ljava/io/InputStream;
move-result-object v2
iput-object v2, v0, Lcom/subgraph/orchid/b/h;->input:Ljava/io/InputStream;
.line 1148
iget-object v2, v0, Lcom/subgraph/orchid/b/h;->bFw:Ljavax/net/ssl/SSLSocket;
invoke-virtual {v2}, Ljavax/net/ssl/SSLSocket;->getOutputStream()Ljava/io/OutputStream;
move-result-object v2
iput-object v2, v0, Lcom/subgraph/orchid/b/h;->output:Ljava/io/OutputStream;
.line 1149
iget-object v2, v0, Lcom/subgraph/orchid/b/h;->bFF:Ljava/lang/Thread;
invoke-virtual {v2}, Ljava/lang/Thread;->start()V
.line 1150
invoke-virtual {v1}, Lcom/subgraph/orchid/b/d;->LF()V
.line 1151
invoke-virtual {v0}, Lcom/subgraph/orchid/b/h;->LO()V
:try_end_7b
.catch Ljava/net/SocketTimeoutException; {:try_start_2e .. :try_end_7b} :catch_8c
.catch Ljava/io/IOException; {:try_start_2e .. :try_end_7b} :catch_a2
.catch Ljava/lang/InterruptedException; {:try_start_2e .. :try_end_7b} :catch_cc
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_2e .. :try_end_7b} :catch_dc
.catch Lcom/subgraph/orchid/ConnectionIOException; {:try_start_2e .. :try_end_7b} :catch_de
.catchall {:try_start_2e .. :try_end_7b} :catchall_93
.line 1138
const/4 v1, 0x1
:try_start_7c
iput-boolean v1, v0, Lcom/subgraph/orchid/b/h;->IM:Z
:try_end_7e
.catchall {:try_start_7c .. :try_end_7e} :catchall_93
.line 1140
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bFG:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2d
.line 1159
:cond_84
:try_start_84
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
const/16 v2, 0x50
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
:try_end_8b
.catch Ljava/net/SocketTimeoutException; {:try_start_84 .. :try_end_8b} :catch_8c
.catch Ljava/io/IOException; {:try_start_84 .. :try_end_8b} :catch_a2
.catch Ljava/lang/InterruptedException; {:try_start_84 .. :try_end_8b} :catch_cc
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_84 .. :try_end_8b} :catch_dc
.catch Lcom/subgraph/orchid/ConnectionIOException; {:try_start_84 .. :try_end_8b} :catch_de
.catchall {:try_start_84 .. :try_end_8b} :catchall_93
goto :goto_3c
.line 1127
:catch_8c
move-exception v1
:try_start_8d
new-instance v1, Lcom/subgraph/orchid/ConnectionTimeoutException;
invoke-direct {v1}, Lcom/subgraph/orchid/ConnectionTimeoutException;-><init>()V
throw v1
:try_end_93
.catchall {:try_start_8d .. :try_end_93} :catchall_93
.line 1140
:catchall_93
move-exception v1
iget-object v0, v0, Lcom/subgraph/orchid/b/h;->bFG:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v1
.line 1169
:cond_9a
:try_start_9a
iget-object v1, v0, Lcom/subgraph/orchid/b/h;->bBt:Lcom/subgraph/orchid/circuits/u;
const/16 v2, 0x55
invoke-virtual {v1, v2}, Lcom/subgraph/orchid/circuits/u;->eJ(I)V
:try_end_a1
.catch Ljava/net/SocketTimeoutException; {:try_start_9a .. :try_end_a1} :catch_8c
.catch Ljava/io/IOException; {:try_start_9a .. :try_end_a1} :catch_a2
.catch Ljava/lang/InterruptedException; {:try_start_9a .. :try_end_a1} :catch_cc
.catch Lcom/subgraph/orchid/ConnectionHandshakeException; {:try_start_9a .. :try_end_a1} :catch_dc
.catch Lcom/subgraph/orchid/ConnectionIOException; {:try_start_9a .. :try_end_a1} :catch_de
.catchall {:try_start_9a .. :try_end_a1} :catchall_93
goto :goto_58
.line 1128
:catch_a2
move-exception v1
.line 1129
:try_start_a3
new-instance v2, Lcom/subgraph/orchid/ConnectionFailedException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " : "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v1}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Lcom/subgraph/orchid/ConnectionFailedException;-><init>(Ljava/lang/String;)V
throw v2
.line 1131
:catch_cc
move-exception v1
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
.line 1132
new-instance v1, Lcom/subgraph/orchid/ConnectionHandshakeException;
const-string v2, "Handshake interrupted"
invoke-direct {v1, v2}, Lcom/subgraph/orchid/ConnectionHandshakeException;-><init>(Ljava/lang/String;)V
throw v1
.line 1134
:catch_dc
move-exception v1
throw v1
.line 1135
:catch_de
move-exception v1
.line 1136
new-instance v2, Lcom/subgraph/orchid/ConnectionFailedException;
invoke-virtual {v1}, Lcom/subgraph/orchid/ConnectionIOException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Lcom/subgraph/orchid/ConnectionFailedException;-><init>(Ljava/lang/String;)V
throw v2
:try_end_e9
.catchall {:try_start_a3 .. :try_end_e9} :catchall_93
.end method
# virtual methods
.method public final synthetic call()Ljava/lang/Object;
.registers 2
.prologue
.line 35
invoke-direct {p0}, Lcom/subgraph/orchid/b/c;->LE()Lcom/subgraph/orchid/b/h;
move-result-object v0
return-object v0
.end method