p.smali

.class public Lcom/subgraph/orchid/circuits/p;
.super Ljava/lang/Object;
.source "OpenExitStreamTask.java"

# interfaces
.implements Ljava/lang/Runnable;


# static fields
.field private static final logger:Ljava/util/logging/Logger;


# instance fields
.field private final bCP:Lcom/subgraph/orchid/o;

.field private final bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 11
    const-class v0, Lcom/subgraph/orchid/circuits/p;

    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;

    move-result-object v0

    sput-object v0, Lcom/subgraph/orchid/circuits/p;->logger:Ljava/util/logging/Logger;

    return-void
.end method

.method constructor <init>(Lcom/subgraph/orchid/o;Lcom/subgraph/orchid/circuits/StreamExitRequest;)V
    .registers 3

    .prologue
    .line 15
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 16
    iput-object p1, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    .line 17
    iput-object p2, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 18
    return-void
.end method


# virtual methods
.method public run()V
    .registers 7

    .prologue
    .line 21
    sget-object v0, Lcom/subgraph/orchid/circuits/p;->logger:Ljava/util/logging/Logger;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Attempting to open stream to "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    iget-object v2, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 23
    :try_start_16
    iget-object v1, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 1043
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 1048
    iget-boolean v0, v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCS:Z

    .line 1043
    if-eqz v0, :cond_3e

    .line 1044
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    iget-object v2, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 1052
    iget-object v2, v2, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCT:Lcom/subgraph/orchid/d/d;

    .line 1044
    iget-object v3, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 1060
    iget v3, v3, Lcom/subgraph/orchid/circuits/StreamExitRequest;->port:I

    .line 1044
    iget-object v4, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    invoke-virtual {v4}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->Lb()J

    move-result-wide v4

    invoke-interface {v0, v2, v3, v4, v5}, Lcom/subgraph/orchid/o;->a(Lcom/subgraph/orchid/d/d;IJ)Lcom/subgraph/orchid/aa;

    move-result-object v0

    .line 2097
    :goto_32
    iget-object v2, v1, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCU:Ljava/lang/Object;

    monitor-enter v2
    :try_end_35
    .catch Ljava/lang/InterruptedException; {:try_start_16 .. :try_end_35} :catch_56
    .catch Ljava/util/concurrent/TimeoutException; {:try_start_16 .. :try_end_35} :catch_6d
    .catch Lcom/subgraph/orchid/StreamConnectFailedException; {:try_start_16 .. :try_end_35} :catch_82

    .line 2098
    :try_start_35
    iput-object v0, v1, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCW:Lcom/subgraph/orchid/aa;

    .line 2099
    sget-object v0, Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;->SUCCESS:Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;

    invoke-virtual {v1, v0}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->a(Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;)V

    .line 2100
    monitor-exit v2
    :try_end_3d
    .catchall {:try_start_35 .. :try_end_3d} :catchall_53

    .line 3093
    :goto_3d
    return-void

    .line 1046
    :cond_3e
    :try_start_3e
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    iget-object v2, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 2056
    iget-object v2, v2, Lcom/subgraph/orchid/circuits/StreamExitRequest;->hostname:Ljava/lang/String;

    .line 1046
    iget-object v3, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 2060
    iget v3, v3, Lcom/subgraph/orchid/circuits/StreamExitRequest;->port:I

    .line 1046
    iget-object v4, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    invoke-virtual {v4}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->Lb()J

    move-result-wide v4

    invoke-interface {v0, v2, v3, v4, v5}, Lcom/subgraph/orchid/o;->a(Ljava/lang/String;IJ)Lcom/subgraph/orchid/aa;
    :try_end_51
    .catch Ljava/lang/InterruptedException; {:try_start_3e .. :try_end_51} :catch_56
    .catch Ljava/util/concurrent/TimeoutException; {:try_start_3e .. :try_end_51} :catch_6d
    .catch Lcom/subgraph/orchid/StreamConnectFailedException; {:try_start_3e .. :try_end_51} :catch_82

    move-result-object v0

    goto :goto_32

    .line 2100
    :catchall_53
    move-exception v0

    :try_start_54
    monitor-exit v2
    :try_end_55
    .catchall {:try_start_54 .. :try_end_55} :catchall_53

    :try_start_55
    throw v0
    :try_end_56
    .catch Ljava/lang/InterruptedException; {:try_start_55 .. :try_end_56} :catch_56
    .catch Ljava/util/concurrent/TimeoutException; {:try_start_55 .. :try_end_56} :catch_6d
    .catch Lcom/subgraph/orchid/StreamConnectFailedException; {:try_start_55 .. :try_end_56} :catch_82

    .line 25
    :catch_56
    move-exception v0

    invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V

    .line 26
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 2104
    iget-object v1, v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCU:Ljava/lang/Object;

    monitor-enter v1

    .line 2105
    :try_start_63
    sget-object v2, Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;->INTERRUPTED:Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;

    invoke-virtual {v0, v2}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->a(Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;)V

    .line 2106
    monitor-exit v1

    goto :goto_3d

    :catchall_6a
    move-exception v0

    monitor-exit v1
    :try_end_6c
    .catchall {:try_start_63 .. :try_end_6c} :catchall_6a

    throw v0

    .line 28
    :catch_6d
    move-exception v0

    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    invoke-interface {v0}, Lcom/subgraph/orchid/o;->Iu()V

    .line 29
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 3078
    iget-object v1, v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCU:Ljava/lang/Object;

    monitor-enter v1

    .line 3079
    :try_start_78
    sget-object v2, Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;->TIMEOUT:Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;

    invoke-virtual {v0, v2}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->a(Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;)V

    .line 3080
    monitor-exit v1

    goto :goto_3d

    :catchall_7f
    move-exception v0

    monitor-exit v1
    :try_end_81
    .catchall {:try_start_78 .. :try_end_81} :catchall_7f

    throw v0

    .line 30
    :catch_82
    move-exception v0

    .line 31
    invoke-virtual {v0}, Lcom/subgraph/orchid/StreamConnectFailedException;->isReasonRetryable()Z

    move-result v1

    if-nez v1, :cond_9f

    .line 32
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    .line 3084
    iget-object v1, v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCU:Ljava/lang/Object;

    monitor-enter v1

    .line 3085
    :try_start_8e
    sget-object v2, Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;->EXIT_FAILURE:Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;

    invoke-virtual {v0, v2}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->a(Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;)V

    .line 3086
    monitor-exit v1
    :try_end_94
    .catchall {:try_start_8e .. :try_end_94} :catchall_9c

    .line 33
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    iget-object v1, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    invoke-interface {v0, v1}, Lcom/subgraph/orchid/o;->b(Lcom/subgraph/orchid/d/a/c;)V

    goto :goto_3d

    .line 3086
    :catchall_9c
    move-exception v0

    :try_start_9d
    monitor-exit v1
    :try_end_9e
    .catchall {:try_start_9d .. :try_end_9e} :catchall_9c

    throw v0

    .line 35
    :cond_9f
    iget-object v1, p0, Lcom/subgraph/orchid/circuits/p;->bCP:Lcom/subgraph/orchid/o;

    invoke-interface {v1}, Lcom/subgraph/orchid/o;->Iu()V

    .line 36
    iget-object v1, p0, Lcom/subgraph/orchid/circuits/p;->bCQ:Lcom/subgraph/orchid/circuits/StreamExitRequest;

    invoke-virtual {v0}, Lcom/subgraph/orchid/StreamConnectFailedException;->getReason()I

    move-result v0

    .line 3090
    iget-object v2, v1, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCU:Ljava/lang/Object;

    monitor-enter v2

    .line 3091
    :try_start_ad
    iput v0, v1, Lcom/subgraph/orchid/circuits/StreamExitRequest;->bCX:I

    .line 3092
    sget-object v0, Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;->STREAM_OPEN_FAILURE:Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;

    invoke-virtual {v1, v0}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->a(Lcom/subgraph/orchid/circuits/StreamExitRequest$CompletionStatus;)V

    .line 3093
    monitor-exit v2

    goto :goto_3d

    :catchall_b6
    move-exception v0

    monitor-exit v2
    :try_end_b8
    .catchall {:try_start_ad .. :try_end_b8} :catchall_b6

    throw v0
.end method