e.smali
.class public Lcom/subgraph/orchid/circuits/e;
.super Ljava/lang/Object;
.source "CircuitIO.java"
# interfaces
.implements Lcom/subgraph/orchid/c/c;
# static fields
.field static final logger:Ljava/util/logging/Logger;
# instance fields
.field final bBF:Lcom/subgraph/orchid/circuits/f;
.field private final bBH:Lcom/subgraph/orchid/g;
.field final bBU:I
.field final bBV:Ljava/util/concurrent/BlockingQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/BlockingQueue",
"<",
"Lcom/subgraph/orchid/t;",
">;"
}
.end annotation
.end field
.field final bBW:Ljava/util/concurrent/BlockingQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/BlockingQueue",
"<",
"Lcom/subgraph/orchid/b;",
">;"
}
.end annotation
.end field
.field final bBX:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/lang/Integer;",
"Lcom/subgraph/orchid/circuits/s;",
">;"
}
.end annotation
.end field
.field final bBY:Ljava/util/concurrent/locks/ReentrantLock;
.field private final bBZ:Ljava/util/concurrent/locks/ReentrantLock;
.field bCa:Z
.field private bCb:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 30
const-class v0, Lcom/subgraph/orchid/circuits/e;
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/e;->logger:Ljava/util/logging/Logger;
return-void
.end method
.method constructor <init>(Lcom/subgraph/orchid/circuits/f;Lcom/subgraph/orchid/g;I)V
.registers 5
.prologue
.line 47
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 41
const-string v0, "stream"
invoke-static {v0}, Lcom/subgraph/orchid/ab;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;
move-result-object v0
iput-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
.line 42
const-string v0, "relaySend"
invoke-static {v0}, Lcom/subgraph/orchid/ab;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;
move-result-object v0
iput-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBZ:Ljava/util/concurrent/locks/ReentrantLock;
.line 48
iput-object p1, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 49
iput-object p2, p0, Lcom/subgraph/orchid/circuits/e;->bBH:Lcom/subgraph/orchid/g;
.line 50
iput p3, p0, Lcom/subgraph/orchid/circuits/e;->bBU:I
.line 52
new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue;
invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBV:Ljava/util/concurrent/BlockingQueue;
.line 53
new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue;
invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBW:Ljava/util/concurrent/BlockingQueue;
.line 54
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBX:Ljava/util/Map;
.line 55
return-void
.end method
.method private KC()J
.registers 9
.prologue
const-wide/16 v6, 0x7530
const-wide/16 v0, 0x0
.line 98
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 1112
iget-object v2, v2, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 98
invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KX()Z
move-result v2
if-eqz v2, :cond_22
.line 2105
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 2112
iget-object v2, v2, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 2105
invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KV()J
move-result-wide v2
.line 2106
cmp-long v4, v2, v0
if-eqz v4, :cond_1e
cmp-long v4, v2, v6
if-ltz v4, :cond_1f
.line 2107
:cond_1e
:goto_1e
return-wide v0
.line 2108
:cond_1f
sub-long v0, v6, v2
.line 99
goto :goto_1e
.line 101
:cond_22
const-wide/16 v0, 0x4e20
goto :goto_1e
.end method
.method private KF()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lcom/subgraph/orchid/aa;",
">;"
}
.end annotation
.prologue
.line 335
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 337
:try_start_5
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBX:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
:try_end_10
.catchall {:try_start_5 .. :try_end_10} :catchall_16
.line 339
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
return-object v0
:catchall_16
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method static a(Ljava/lang/String;Lcom/subgraph/orchid/t;)V
.registers 5
.prologue
.line 215
.line 4223
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v0
packed-switch v0, :pswitch_data_2c
.line 4228
:pswitch_7
sget-object v0, Ljava/util/logging/Level;->FINER:Ljava/util/logging/Level;
.line 216
:goto_9
sget-object v1, Lcom/subgraph/orchid/circuits/e;->logger:Ljava/util/logging/Logger;
invoke-virtual {v1, v0}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v1
if-nez v1, :cond_15
.line 220
:goto_11
return-void
.line 4226
:pswitch_12
sget-object v0, Ljava/util/logging/Level;->FINEST:Ljava/util/logging/Level;
goto :goto_9
.line 219
:cond_15
sget-object v1, Lcom/subgraph/orchid/circuits/e;->logger:Ljava/util/logging/Logger;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v0, v2}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
goto :goto_11
.line 4223
:pswitch_data_2c
.packed-switch 0x2
:pswitch_12
:pswitch_7
:pswitch_7
:pswitch_12
.end packed-switch
.end method
# virtual methods
.method final Iq()Z
.registers 3
.prologue
.line 261
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 263
:try_start_5
iget-boolean v0, p0, Lcom/subgraph/orchid/circuits/e;->bCa:Z
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 265
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
return v0
:catchall_d
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method final KA()Lcom/subgraph/orchid/t;
.registers 5
.prologue
.line 67
:try_start_0
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/e;->KC()J
move-result-wide v0
.line 68
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBV:Ljava/util/concurrent/BlockingQueue;
sget-object v3, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invoke-interface {v2, v0, v1, v3}, Ljava/util/concurrent/BlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/t;
:try_end_e
.catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_e} :catch_f
.line 71
:goto_e
return-object v0
.line 70
:catch_f
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 71
const/4 v0, 0x0
goto :goto_e
.end method
.method final KB()Lcom/subgraph/orchid/b;
.registers 5
.prologue
.line 88
:try_start_0
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/e;->KC()J
move-result-wide v0
.line 89
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBW:Ljava/util/concurrent/BlockingQueue;
sget-object v3, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invoke-interface {v2, v0, v1, v3}, Ljava/util/concurrent/BlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/b;
:try_end_e
.catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_e} :catch_f
.line 92
:goto_e
return-object v0
.line 91
:catch_f
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 92
const/4 v0, 0x0
goto :goto_e
.end method
.method final KD()V
.registers 5
.prologue
.line 270
sget-object v0, Lcom/subgraph/orchid/circuits/e;->logger:Ljava/util/logging/Logger;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Closing circuit "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
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 5278
iget v0, p0, Lcom/subgraph/orchid/circuits/e;->bBU:I
const/4 v1, 0x4
invoke-static {v0, v1}, Lcom/subgraph/orchid/circuits/a/a;->aJ(II)Lcom/subgraph/orchid/circuits/a/a;
move-result-object v0
.line 5279
const/4 v1, 0x0
invoke-interface {v0, v1}, Lcom/subgraph/orchid/b;->eA(I)V
.line 5281
:try_start_21
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBH:Lcom/subgraph/orchid/g;
invoke-interface {v1, v0}, Lcom/subgraph/orchid/g;->d(Lcom/subgraph/orchid/b;)V
:try_end_26
.catch Lcom/subgraph/orchid/ConnectionIOException; {:try_start_21 .. :try_end_26} :catch_36
.line 272
:goto_26
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBH:Lcom/subgraph/orchid/g;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-interface {v0, v1}, Lcom/subgraph/orchid/g;->b(Lcom/subgraph/orchid/c;)V
.line 273
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/f;->KJ()V
.line 274
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/subgraph/orchid/circuits/e;->bCb:Z
.line 275
return-void
.line 5282
:catch_36
move-exception v0
.line 5283
sget-object v1, Lcom/subgraph/orchid/circuits/e;->logger:Ljava/util/logging/Logger;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Connection IO error sending DESTROY cell: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Lcom/subgraph/orchid/ConnectionIOException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
goto :goto_26
.end method
.method final KE()V
.registers 3
.prologue
.line 292
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 294
:try_start_5
iget-boolean v0, p0, Lcom/subgraph/orchid/circuits/e;->bCb:Z
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_3a
if-eqz v0, :cond_f
.line 305
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 306
:goto_e
return-void
.line 297
:cond_f
:try_start_f
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/f;->KJ()V
.line 298
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBH:Lcom/subgraph/orchid/g;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-interface {v0, v1}, Lcom/subgraph/orchid/g;->b(Lcom/subgraph/orchid/c;)V
.line 299
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBX:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 300
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_2a
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_41
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/s;
.line 301
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/s;->close()V
:try_end_39
.catchall {:try_start_f .. :try_end_39} :catchall_3a
goto :goto_2a
.line 305
:catchall_3a
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 303
:cond_41
const/4 v0, 0x1
:try_start_42
iput-boolean v0, p0, Lcom/subgraph/orchid/circuits/e;->bCb:Z
:try_end_44
.catchall {:try_start_42 .. :try_end_44} :catchall_3a
.line 305
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_e
.end method
.method final a(IILcom/subgraph/orchid/f;)Lcom/subgraph/orchid/t;
.registers 6
.prologue
.line 190
new-instance v0, Lcom/subgraph/orchid/circuits/a/b;
iget v1, p0, Lcom/subgraph/orchid/circuits/e;->bBU:I
invoke-direct {v0, p3, v1, p2, p1}, Lcom/subgraph/orchid/circuits/a/b;-><init>(Lcom/subgraph/orchid/f;III)V
return-object v0
.end method
.method public final a(Lcom/subgraph/orchid/c/d;Ljava/io/PrintWriter;I)V
.registers 6
.prologue
.line 344
and-int/lit8 v0, p3, 0x10
if-nez v0, :cond_5
.line 350
:cond_4
return-void
.line 347
:cond_5
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/e;->KF()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_d
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_4
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/aa;
.line 348
invoke-interface {p1, p2, p3, v0}, Lcom/subgraph/orchid/c/d;->a(Ljava/io/PrintWriter;ILjava/lang/Object;)V
goto :goto_d
.end method
.method final a(Lcom/subgraph/orchid/t;Lcom/subgraph/orchid/f;)V
.registers 5
.prologue
.line 194
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBZ:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 196
:try_start_5
const-string v0, "Sending: "
invoke-static {v0, p1}, Lcom/subgraph/orchid/circuits/e;->a(Ljava/lang/String;Lcom/subgraph/orchid/t;)V
.line 197
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jz()V
.line 198
invoke-interface {p2, p1}, Lcom/subgraph/orchid/f;->b(Lcom/subgraph/orchid/t;)V
.line 199
invoke-interface {p2}, Lcom/subgraph/orchid/f;->Iz()[B
move-result-object v0
invoke-interface {p1, v0}, Lcom/subgraph/orchid/t;->aj([B)V
move-object v0, p2
.line 201
:goto_18
if-eqz v0, :cond_22
.line 202
invoke-interface {v0, p1}, Lcom/subgraph/orchid/f;->c(Lcom/subgraph/orchid/t;)V
.line 201
invoke-interface {v0}, Lcom/subgraph/orchid/f;->IA()Lcom/subgraph/orchid/f;
move-result-object v0
goto :goto_18
.line 204
:cond_22
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v0
const/4 v1, 0x2
if-ne v0, v1, :cond_2c
.line 205
invoke-interface {p2}, Lcom/subgraph/orchid/f;->IC()V
.line 207
:cond_2c
invoke-virtual {p0, p1}, Lcom/subgraph/orchid/circuits/e;->d(Lcom/subgraph/orchid/b;)V
:try_end_2f
.catchall {:try_start_5 .. :try_end_2f} :catchall_35
.line 209
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBZ:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 210
return-void
.line 209
:catchall_35
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBZ:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method final be(Z)Lcom/subgraph/orchid/circuits/s;
.registers 6
.prologue
.line 310
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 312
:try_start_5
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 6112
iget-object v0, v0, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 312
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KY()I
move-result v0
.line 313
new-instance v1, Lcom/subgraph/orchid/circuits/s;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
iget-object v3, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/f;->It()Lcom/subgraph/orchid/f;
move-result-object v3
invoke-direct {v1, v2, v3, v0, p1}, Lcom/subgraph/orchid/circuits/s;-><init>(Lcom/subgraph/orchid/circuits/f;Lcom/subgraph/orchid/f;IZ)V
.line 314
iget-object v2, p0, Lcom/subgraph/orchid/circuits/e;->bBX:Ljava/util/Map;
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
invoke-interface {v2, v0, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_23
.catchall {:try_start_5 .. :try_end_23} :catchall_29
.line 317
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
return-object v1
:catchall_29
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method final d(Lcom/subgraph/orchid/b;)V
.registers 4
.prologue
.line 233
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBF:Lcom/subgraph/orchid/circuits/f;
.line 5112
iget-object v0, v0, Lcom/subgraph/orchid/circuits/f;->bCe:Lcom/subgraph/orchid/circuits/CircuitStatus;
.line 234
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/CircuitStatus;->isConnected()Z
move-result v1
if-nez v1, :cond_11
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KX()Z
move-result v1
if-nez v1, :cond_11
.line 242
:goto_10
return-void
.line 237
:cond_11
:try_start_11
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/CircuitStatus;->KU()V
.line 238
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBH:Lcom/subgraph/orchid/g;
invoke-interface {v0, p1}, Lcom/subgraph/orchid/g;->d(Lcom/subgraph/orchid/b;)V
:try_end_19
.catch Lcom/subgraph/orchid/ConnectionIOException; {:try_start_11 .. :try_end_19} :catch_1a
goto :goto_10
.line 240
:catch_1a
move-exception v0
invoke-virtual {p0}, Lcom/subgraph/orchid/circuits/e;->KE()V
goto :goto_10
.end method
.method final d(Lcom/subgraph/orchid/t;)V
.registers 10
.prologue
const/4 v3, 0x5
.line 167
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v0
const/4 v1, 0x2
if-ne v0, v1, :cond_29
.line 168
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jx()Lcom/subgraph/orchid/f;
move-result-object v0
invoke-interface {v0}, Lcom/subgraph/orchid/f;->IE()V
.line 169
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jx()Lcom/subgraph/orchid/f;
move-result-object v0
invoke-interface {v0}, Lcom/subgraph/orchid/f;->IF()Z
move-result v0
if-eqz v0, :cond_29
.line 170
const/4 v0, 0x0
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jx()Lcom/subgraph/orchid/f;
move-result-object v1
invoke-virtual {p0, v3, v0, v1}, Lcom/subgraph/orchid/circuits/e;->a(IILcom/subgraph/orchid/f;)Lcom/subgraph/orchid/t;
move-result-object v0
.line 171
invoke-interface {v0}, Lcom/subgraph/orchid/t;->Jx()Lcom/subgraph/orchid/f;
move-result-object v1
invoke-virtual {p0, v0, v1}, Lcom/subgraph/orchid/circuits/e;->a(Lcom/subgraph/orchid/t;Lcom/subgraph/orchid/f;)V
.line 175
:cond_29
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 177
:try_start_2e
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBX:Ljava/util/Map;
invoke-interface {p1}, Lcom/subgraph/orchid/t;->getStreamId()I
move-result v1
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/s;
.line 181
if-eqz v0, :cond_67
.line 3059
iget-boolean v1, v0, Lcom/subgraph/orchid/circuits/s;->bCb:Z
if-nez v1, :cond_67
.line 3061
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v1
const/4 v2, 0x3
if-ne v1, v2, :cond_86
.line 3062
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bDj:Ljava/lang/Object;
monitor-enter v1
:try_end_4e
.catchall {:try_start_2e .. :try_end_4e} :catchall_7f
.line 3063
:try_start_4e
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Ik()I
move-result v2
iput v2, v0, Lcom/subgraph/orchid/circuits/s;->bDh:I
.line 3064
const/4 v2, 0x1
iput-boolean v2, v0, Lcom/subgraph/orchid/circuits/s;->bDg:Z
.line 3065
iget-object v2, v0, Lcom/subgraph/orchid/circuits/s;->bDe:Lcom/subgraph/orchid/circuits/v;
.line 3145
iget-object v3, v2, Lcom/subgraph/orchid/circuits/v;->lock:Ljava/lang/Object;
monitor-enter v3
:try_end_5c
.catchall {:try_start_4e .. :try_end_5c} :catchall_7c
.line 3146
:try_start_5c
iget-boolean v4, v2, Lcom/subgraph/orchid/circuits/v;->bCb:Z
if-eqz v4, :cond_6d
.line 3147
monitor-exit v3
:try_end_61
.catchall {:try_start_5c .. :try_end_61} :catchall_79
.line 3066
:goto_61
:try_start_61
iget-object v0, v0, Lcom/subgraph/orchid/circuits/s;->bDj:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->notifyAll()V
.line 3067
monitor-exit v1
:try_end_67
.catchall {:try_start_61 .. :try_end_67} :catchall_7c
.line 185
:cond_67
:goto_67
iget-object v0, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 186
return-void
.line 3149
:cond_6d
:try_start_6d
iget-object v4, v2, Lcom/subgraph/orchid/circuits/v;->bDr:Ljava/util/Queue;
invoke-interface {v4, p1}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
.line 3150
iget-object v2, v2, Lcom/subgraph/orchid/circuits/v;->lock:Ljava/lang/Object;
invoke-virtual {v2}, Ljava/lang/Object;->notifyAll()V
.line 3151
monitor-exit v3
goto :goto_61
:catchall_79
move-exception v0
monitor-exit v3
:try_end_7b
.catchall {:try_start_6d .. :try_end_7b} :catchall_79
:try_start_7b
throw v0
.line 3067
:catchall_7c
move-exception v0
monitor-exit v1
:try_end_7e
.catchall {:try_start_7b .. :try_end_7e} :catchall_7c
:try_start_7e
throw v0
:try_end_7f
.catchall {:try_start_7e .. :try_end_7f} :catchall_7f
.line 185
:catchall_7f
move-exception v0
iget-object v1, p0, Lcom/subgraph/orchid/circuits/e;->bBY:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3068
:cond_86
:try_start_86
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v1
const/4 v2, 0x4
if-ne v1, v2, :cond_9d
.line 3069
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bDj:Ljava/lang/Object;
monitor-enter v1
:try_end_90
.catchall {:try_start_86 .. :try_end_90} :catchall_7f
.line 3070
const/4 v2, 0x1
:try_start_91
iput-boolean v2, v0, Lcom/subgraph/orchid/circuits/s;->bDi:Z
.line 3071
iget-object v0, v0, Lcom/subgraph/orchid/circuits/s;->bDj:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->notifyAll()V
.line 3072
monitor-exit v1
goto :goto_67
:catchall_9a
move-exception v0
monitor-exit v1
:try_end_9c
.catchall {:try_start_91 .. :try_end_9c} :catchall_9a
:try_start_9c
throw v0
.line 3073
:cond_9d
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Jw()I
move-result v1
if-ne v1, v3, :cond_b6
.line 3074
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bCy:Ljava/lang/Object;
monitor-enter v1
:try_end_a6
.catchall {:try_start_9c .. :try_end_a6} :catchall_7f
.line 3075
:try_start_a6
iget v2, v0, Lcom/subgraph/orchid/circuits/s;->bCz:I
add-int/lit8 v2, v2, 0x32
iput v2, v0, Lcom/subgraph/orchid/circuits/s;->bCz:I
.line 3076
iget-object v0, v0, Lcom/subgraph/orchid/circuits/s;->bCy:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->notifyAll()V
.line 3077
monitor-exit v1
goto :goto_67
:catchall_b3
move-exception v0
monitor-exit v1
:try_end_b5
.catchall {:try_start_a6 .. :try_end_b5} :catchall_b3
:try_start_b5
throw v0
.line 3080
:cond_b6
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bDe:Lcom/subgraph/orchid/circuits/v;
.line 3155
iget-object v2, v1, Lcom/subgraph/orchid/circuits/v;->lock:Ljava/lang/Object;
monitor-enter v2
:try_end_bb
.catchall {:try_start_b5 .. :try_end_bb} :catchall_7f
.line 3156
:try_start_bb
iget-boolean v3, v1, Lcom/subgraph/orchid/circuits/v;->bCb:Z
if-eqz v3, :cond_d8
.line 3157
monitor-exit v2
:try_end_c0
.catchall {:try_start_bb .. :try_end_c0} :catchall_f7
.line 3081
:goto_c0
:try_start_c0
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bCy:Ljava/lang/Object;
monitor-enter v1
:try_end_c3
.catchall {:try_start_c0 .. :try_end_c3} :catchall_7f
.line 3082
:try_start_c3
iget v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
add-int/lit8 v2, v2, -0x1
iput v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
.line 3083
iget v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
if-gez v2, :cond_fa
.line 3084
new-instance v0, Lcom/subgraph/orchid/TorException;
const-string v2, "Stream has negative delivery window"
invoke-direct {v0, v2}, Lcom/subgraph/orchid/TorException;-><init>(Ljava/lang/String;)V
throw v0
.line 3085
:catchall_d5
move-exception v0
monitor-exit v1
:try_end_d7
.catchall {:try_start_c3 .. :try_end_d7} :catchall_d5
:try_start_d7
throw v0
:try_end_d8
.catchall {:try_start_d7 .. :try_end_d8} :catchall_7f
.line 3159
:cond_d8
:try_start_d8
iget-object v3, v1, Lcom/subgraph/orchid/circuits/v;->bDr:Ljava/util/Queue;
invoke-interface {v3, p1}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
.line 3160
iget-wide v4, v1, Lcom/subgraph/orchid/circuits/v;->bDs:J
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Io()I
move-result v3
int-to-long v6, v3
add-long/2addr v4, v6
iput-wide v4, v1, Lcom/subgraph/orchid/circuits/v;->bDs:J
.line 3161
iget v3, v1, Lcom/subgraph/orchid/circuits/v;->JW:I
invoke-interface {p1}, Lcom/subgraph/orchid/t;->Io()I
move-result v4
add-int/2addr v3, v4
iput v3, v1, Lcom/subgraph/orchid/circuits/v;->JW:I
.line 3162
iget-object v1, v1, Lcom/subgraph/orchid/circuits/v;->lock:Ljava/lang/Object;
invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V
.line 3163
monitor-exit v2
goto :goto_c0
:catchall_f7
move-exception v0
monitor-exit v2
:try_end_f9
.catchall {:try_start_d8 .. :try_end_f9} :catchall_f7
:try_start_f9
throw v0
:try_end_fa
.catchall {:try_start_f9 .. :try_end_fa} :catchall_7f
.line 3085
:cond_fa
:try_start_fa
monitor-exit v1
:try_end_fb
.catchall {:try_start_fa .. :try_end_fb} :catchall_d5
.line 4091
:try_start_fb
iget-object v1, v0, Lcom/subgraph/orchid/circuits/s;->bCy:Ljava/lang/Object;
monitor-enter v1
:try_end_fe
.catchall {:try_start_fb .. :try_end_fe} :catchall_7f
.line 4092
:try_start_fe
iget v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
const/16 v3, 0x1c2
if-le v2, v3, :cond_10a
.line 4093
monitor-exit v1
goto/16 :goto_67
.line 4101
:catchall_107
move-exception v0
monitor-exit v1
:try_end_109
.catchall {:try_start_fe .. :try_end_109} :catchall_107
:try_start_109
throw v0
:try_end_10a
.catchall {:try_start_109 .. :try_end_10a} :catchall_7f
.line 4095
:cond_10a
:try_start_10a
iget-object v2, v0, Lcom/subgraph/orchid/circuits/s;->bDe:Lcom/subgraph/orchid/circuits/v;
invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/v;->Lk()I
move-result v2
const/16 v3, 0xa
if-lt v2, v3, :cond_117
.line 4096
monitor-exit v1
goto/16 :goto_67
.line 4098
:cond_117
iget-object v2, v0, Lcom/subgraph/orchid/circuits/s;->bBF:Lcom/subgraph/orchid/circuits/f;
const/4 v3, 0x5
iget v4, v0, Lcom/subgraph/orchid/circuits/s;->bzk:I
iget-object v5, v0, Lcom/subgraph/orchid/circuits/s;->bDd:Lcom/subgraph/orchid/f;
invoke-virtual {v2, v3, v4, v5}, Lcom/subgraph/orchid/circuits/f;->a(IILcom/subgraph/orchid/f;)Lcom/subgraph/orchid/t;
move-result-object v2
.line 4099
iget-object v3, v0, Lcom/subgraph/orchid/circuits/s;->bBF:Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v3, v2}, Lcom/subgraph/orchid/circuits/f;->a(Lcom/subgraph/orchid/t;)V
.line 4100
iget v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
add-int/lit8 v2, v2, 0x32
iput v2, v0, Lcom/subgraph/orchid/circuits/s;->bCA:I
.line 4101
monitor-exit v1
:try_end_12e
.catchall {:try_start_10a .. :try_end_12e} :catchall_107
goto/16 :goto_67
.end method