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