c.smali
.class public Lcom/subgraph/orchid/circuits/c;
.super Ljava/lang/Object;
.source "CircuitCreationTask.java"
# interfaces
.implements Ljava/lang/Runnable;
# static fields
.field private static final logger:Ljava/util/logging/Logger;
# instance fields
.field private final bBI:Lcom/subgraph/orchid/d;
.field private final bBL:Lcom/subgraph/orchid/circuits/g;
.field private final bBM:Lcom/subgraph/orchid/d;
.field private bBN:I
.field final bBO:Lcom/subgraph/orchid/circuits/l;
.field private final bBP:Ljava/util/concurrent/atomic/AtomicLong;
.field private final bBs:Lcom/subgraph/orchid/j;
.field private final bBt:Lcom/subgraph/orchid/circuits/u;
.field private final bBu:Lcom/subgraph/orchid/h;
.field private final executor:Ljava/util/concurrent/Executor;
.field private final pathChooser:Lcom/subgraph/orchid/circuits/path/d;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 28
const-class v0, Lcom/subgraph/orchid/circuits/c;
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/c;->logger:Ljava/util/logging/Logger;
return-void
.end method
.method constructor <init>(Lcom/subgraph/orchid/j;Lcom/subgraph/orchid/h;Lcom/subgraph/orchid/circuits/path/d;Lcom/subgraph/orchid/circuits/g;Lcom/subgraph/orchid/circuits/u;)V
.registers 7
.prologue
.line 48
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 42
const/4 v0, 0x0
iput v0, p0, Lcom/subgraph/orchid/circuits/c;->bBN:I
.line 50
iput-object p1, p0, Lcom/subgraph/orchid/circuits/c;->bBs:Lcom/subgraph/orchid/j;
.line 51
iput-object p2, p0, Lcom/subgraph/orchid/circuits/c;->bBu:Lcom/subgraph/orchid/h;
.line 52
iput-object p4, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 53
iput-object p5, p0, Lcom/subgraph/orchid/circuits/c;->bBt:Lcom/subgraph/orchid/circuits/u;
.line 54
iput-object p3, p0, Lcom/subgraph/orchid/circuits/c;->pathChooser:Lcom/subgraph/orchid/circuits/path/d;
.line 55
const-string v0, "CircuitCreationTask worker"
invoke-static {v0}, Lcom/subgraph/orchid/ab;->gr(Ljava/lang/String;)Ljava/util/concurrent/ExecutorService;
move-result-object v0
iput-object v0, p0, Lcom/subgraph/orchid/circuits/c;->executor:Ljava/util/concurrent/Executor;
.line 1228
new-instance v0, Lcom/subgraph/orchid/circuits/c$3;
invoke-direct {v0, p0}, Lcom/subgraph/orchid/circuits/c$3;-><init>(Lcom/subgraph/orchid/circuits/c;)V
.line 56
iput-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBI:Lcom/subgraph/orchid/d;
.line 1270
new-instance v0, Lcom/subgraph/orchid/circuits/c$4;
invoke-direct {v0, p0}, Lcom/subgraph/orchid/circuits/c$4;-><init>(Lcom/subgraph/orchid/circuits/c;)V
.line 57
iput-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBM:Lcom/subgraph/orchid/d;
.line 58
new-instance v0, Lcom/subgraph/orchid/circuits/l;
invoke-direct {v0}, Lcom/subgraph/orchid/circuits/l;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBO:Lcom/subgraph/orchid/circuits/l;
.line 59
new-instance v0, Ljava/util/concurrent/atomic/AtomicLong;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicLong;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBP:Ljava/util/concurrent/atomic/AtomicLong;
.line 60
return-void
.end method
.method private Ky()V
.registers 10
.prologue
const/4 v2, 0x0
.line 78
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 3256
iget-object v0, v0, Lcom/subgraph/orchid/circuits/g;->bCl:Lcom/subgraph/orchid/circuits/q;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/q;->KZ()Ljava/util/List;
move-result-object v3
.line 79
invoke-interface {v3}, Ljava/util/List;->isEmpty()Z
move-result v0
if-eqz v0, :cond_10
.line 89
:cond_f
return-void
.line 82
:cond_10
iget-object v4, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 4194
new-instance v0, Lcom/subgraph/orchid/circuits/g$2;
invoke-direct {v0}, Lcom/subgraph/orchid/circuits/g$2;-><init>()V
invoke-virtual {v4, v0}, Lcom/subgraph/orchid/circuits/g;->a(Lcom/subgraph/orchid/circuits/h;)Ljava/util/Set;
move-result-object v0
.line 4201
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
.line 4202
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_24
:goto_24
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3a
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/c;
.line 4203
instance-of v6, v0, Lcom/subgraph/orchid/o;
if-eqz v6, :cond_24
.line 4204
check-cast v0, Lcom/subgraph/orchid/o;
invoke-virtual {v5, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24
.line 4207
:cond_3a
invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
move-result v6
move v1, v2
.line 4208
:goto_3f
if-ge v1, v6, :cond_5b
.line 4209
invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/o;
.line 4210
iget-object v7, v4, Lcom/subgraph/orchid/circuits/g;->bCk:Lcom/subgraph/orchid/crypto/q;
invoke-virtual {v7, v6}, Lcom/subgraph/orchid/crypto/q;->nextInt(I)I
move-result v7
.line 4211
invoke-virtual {v5, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v8
invoke-virtual {v5, v1, v8}, Ljava/util/ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
.line 4212
invoke-virtual {v5, v7, v0}, Ljava/util/ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
.line 4208
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_3f
.line 82
:cond_5b
invoke-interface {v5}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_5f
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_f
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
move-object v1, v0
check-cast v1, Lcom/subgraph/orchid/o;
.line 83
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
.line 84
:cond_70
:goto_70
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_5f
.line 85
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;
.line 5092
invoke-interface {v1, v0}, Lcom/subgraph/orchid/o;->a(Lcom/subgraph/orchid/d/a/c;)Z
move-result v6
if-eqz v6, :cond_92
.line 5093
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->Le()Z
move-result v6
if-eqz v6, :cond_8b
.line 5094
invoke-direct {p0, v1, v0}, Lcom/subgraph/orchid/circuits/c;->a(Lcom/subgraph/orchid/o;Lcom/subgraph/orchid/circuits/StreamExitRequest;)V
.line 5097
:cond_8b
const/4 v0, 0x1
.line 85
:goto_8c
if-eqz v0, :cond_70
.line 86
invoke-interface {v5}, Ljava/util/Iterator;->remove()V
goto :goto_70
:cond_92
move v0, v2
.line 5099
goto :goto_8c
.end method
.method private Kz()V
.registers 7
.prologue
const/4 v5, 0x0
.line 145
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBu:Lcom/subgraph/orchid/h;
invoke-interface {v0}, Lcom/subgraph/orchid/h;->isClosed()Z
move-result v0
if-eqz v0, :cond_11
.line 146
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
const-string v1, "Not building circuits, because connection cache is closed"
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
.line 6218
:cond_10
:goto_10
return-void
.line 150
:cond_11
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 5256
iget-object v0, v0, Lcom/subgraph/orchid/circuits/g;->bCl:Lcom/subgraph/orchid/circuits/q;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/q;->KZ()Ljava/util/List;
move-result-object v1
.line 151
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBO:Lcom/subgraph/orchid/circuits/l;
.line 6073
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 6074
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/l;->KS()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_28
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_41
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
.line 6075
new-instance v4, Lcom/subgraph/orchid/circuits/r;
invoke-direct {v4, v0}, Lcom/subgraph/orchid/circuits/r;-><init>(I)V
invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_28
.line 152
:cond_41
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 153
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_4a
:goto_4a
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_66
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;
.line 154
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->Lf()Z
move-result v4
if-nez v4, :cond_4a
invoke-direct {p0, v0, v5}, Lcom/subgraph/orchid/circuits/c;->a(Lcom/subgraph/orchid/d/a/c;Z)I
move-result v4
if-nez v4, :cond_4a
.line 155
invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_4a
.line 158
:cond_66
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_6a
:goto_6a
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_82
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/r;
.line 159
const/4 v2, 0x1
invoke-direct {p0, v0, v2}, Lcom/subgraph/orchid/circuits/c;->a(Lcom/subgraph/orchid/d/a/c;Z)I
move-result v2
const/4 v4, 0x2
if-ge v2, v4, :cond_6a
.line 160
invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_6a
.line 6199
:cond_82
invoke-interface {v3}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_10
.line 6202
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBs:Lcom/subgraph/orchid/j;
invoke-interface {v0}, Lcom/subgraph/orchid/j;->IY()Z
move-result v0
if-eqz v0, :cond_10
.line 6204
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/g;->KM()I
move-result v0
const/4 v1, 0x4
if-ge v0, v1, :cond_10
.line 6207
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
sget-object v1, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v0
if-eqz v0, :cond_c1
.line 6208
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Building new circuit to handle "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " pending streams and predicted ports"
invoke-virtual {v1, v2}, 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-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 6215
:cond_c1
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->pathChooser:Lcom/subgraph/orchid/circuits/path/d;
invoke-virtual {v0, v3}, Lcom/subgraph/orchid/circuits/path/d;->ai(Ljava/util/List;)Lcom/subgraph/orchid/v;
move-result-object v0
.line 6216
if-nez v0, :cond_d2
.line 6217
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
const-string v1, "Failed to select suitable exit node for targets"
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
goto/16 :goto_10
.line 6221
:cond_d2
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 7123
invoke-static {v1, v0}, Lcom/subgraph/orchid/circuits/f;->a(Lcom/subgraph/orchid/circuits/g;Lcom/subgraph/orchid/v;)Lcom/subgraph/orchid/o;
move-result-object v0
.line 6222
new-instance v1, Lcom/subgraph/orchid/circuits/b;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/c;->pathChooser:Lcom/subgraph/orchid/circuits/path/d;
iget-object v3, p0, Lcom/subgraph/orchid/circuits/c;->bBI:Lcom/subgraph/orchid/d;
invoke-direct {v1, v2, v0, v3, v5}, Lcom/subgraph/orchid/circuits/b;-><init>(Lcom/subgraph/orchid/circuits/path/d;Lcom/subgraph/orchid/c;Lcom/subgraph/orchid/d;Z)V
.line 6223
new-instance v0, Lcom/subgraph/orchid/circuits/a;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/c;->bBu:Lcom/subgraph/orchid/h;
iget-object v3, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/g;->KP()Z
move-result v3
iget-object v4, p0, Lcom/subgraph/orchid/circuits/c;->bBt:Lcom/subgraph/orchid/circuits/u;
invoke-direct {v0, v1, v2, v3, v4}, Lcom/subgraph/orchid/circuits/a;-><init>(Lcom/subgraph/orchid/circuits/b;Lcom/subgraph/orchid/h;ZLcom/subgraph/orchid/circuits/u;)V
.line 6224
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->executor:Ljava/util/concurrent/Executor;
invoke-interface {v1, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto/16 :goto_10
.end method
.method private a(Lcom/subgraph/orchid/d/a/c;Z)I
.registers 5
.prologue
.line 184
new-instance v0, Lcom/subgraph/orchid/circuits/c$2;
invoke-direct {v0, p2, p1}, Lcom/subgraph/orchid/circuits/c$2;-><init>(ZLcom/subgraph/orchid/d/a/c;)V
.line 195
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
invoke-virtual {v1, v0}, Lcom/subgraph/orchid/circuits/g;->a(Lcom/subgraph/orchid/circuits/h;)Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->size()I
move-result v0
return v0
.end method
.method static synthetic a(Lcom/subgraph/orchid/circuits/c;)Ljava/util/concurrent/atomic/AtomicLong;
.registers 2
.prologue
.line 27
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBP:Ljava/util/concurrent/atomic/AtomicLong;
return-object v0
.end method
.method static synthetic a(Lcom/subgraph/orchid/circuits/c;Lcom/subgraph/orchid/c;)V
.registers 5
.prologue
.line 7257
instance-of v0, p1, Lcom/subgraph/orchid/o;
if-eqz v0, :cond_2e
.line 7260
check-cast p1, Lcom/subgraph/orchid/o;
.line 7261
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 8256
iget-object v0, v0, Lcom/subgraph/orchid/circuits/g;->bCl:Lcom/subgraph/orchid/circuits/q;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/q;->KZ()Ljava/util/List;
move-result-object v0
.line 7262
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_12
:goto_12
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2e
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/circuits/StreamExitRequest;
.line 7263
invoke-interface {p1, v0}, Lcom/subgraph/orchid/o;->a(Lcom/subgraph/orchid/d/a/c;)Z
move-result v2
if-eqz v2, :cond_12
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/StreamExitRequest;->Le()Z
move-result v2
if-eqz v2, :cond_12
.line 7264
invoke-direct {p0, p1, v0}, Lcom/subgraph/orchid/circuits/c;->a(Lcom/subgraph/orchid/o;Lcom/subgraph/orchid/circuits/StreamExitRequest;)V
goto :goto_12
.line 27
:cond_2e
return-void
.end method
.method private a(Lcom/subgraph/orchid/o;Lcom/subgraph/orchid/circuits/StreamExitRequest;)V
.registers 5
.prologue
.line 103
new-instance v0, Lcom/subgraph/orchid/circuits/p;
invoke-direct {v0, p1, p2}, Lcom/subgraph/orchid/circuits/p;-><init>(Lcom/subgraph/orchid/o;Lcom/subgraph/orchid/circuits/StreamExitRequest;)V
.line 104
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->executor:Ljava/util/concurrent/Executor;
invoke-interface {v1, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
.line 105
return-void
.end method
.method static synthetic access$000()Ljava/util/logging/Logger;
.registers 1
.prologue
.line 27
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
return-object v0
.end method
.method static synthetic b(Lcom/subgraph/orchid/circuits/c;)V
.registers 1
.prologue
.line 27
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/c;->Kz()V
return-void
.end method
.method static synthetic c(Lcom/subgraph/orchid/circuits/c;)Lcom/subgraph/orchid/circuits/g;
.registers 2
.prologue
.line 27
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
return-object v0
.end method
# virtual methods
.method final eG(I)V
.registers 3
.prologue
.line 74
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBO:Lcom/subgraph/orchid/circuits/l;
invoke-virtual {v0, p1}, Lcom/subgraph/orchid/circuits/l;->eI(I)V
.line 75
return-void
.end method
.method public run()V
.registers 6
.prologue
.line 67
.line 2108
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
new-instance v1, Lcom/subgraph/orchid/circuits/c$1;
invoke-direct {v1}, Lcom/subgraph/orchid/circuits/c$1;-><init>()V
invoke-virtual {v0, v1}, Lcom/subgraph/orchid/circuits/g;->a(Lcom/subgraph/orchid/circuits/h;)Ljava/util/Set;
move-result-object v0
.line 2114
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_f
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_35
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/c;
.line 2115
sget-object v2, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Closing idle dirty circuit: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 2116
check-cast v0, Lcom/subgraph/orchid/circuits/f;
invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/f;->Iu()V
goto :goto_f
.line 68
:cond_35
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/c;->Ky()V
.line 2125
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBs:Lcom/subgraph/orchid/j;
invoke-interface {v0}, Lcom/subgraph/orchid/j;->IY()Z
move-result v0
if-nez v0, :cond_54
.line 2126
iget v0, p0, Lcom/subgraph/orchid/circuits/c;->bBN:I
rem-int/lit8 v0, v0, 0x14
if-nez v0, :cond_4d
.line 2127
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
const-string v1, "Cannot build circuits because we don\'t have enough directory information"
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V
.line 2128
:cond_4d
iget v0, p0, Lcom/subgraph/orchid/circuits/c;->bBN:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/subgraph/orchid/circuits/c;->bBN:I
.line 2377
:cond_53
:goto_53
return-void
.line 2133
:cond_54
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBP:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
if-eqz v0, :cond_68
.line 2134
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
.line 2135
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBP:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
.line 2140
:cond_68
invoke-direct {p0}, Lcom/subgraph/orchid/circuits/c;->Kz()V
.line 2167
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->bBO:Lcom/subgraph/orchid/circuits/l;
invoke-virtual {v1}, Lcom/subgraph/orchid/circuits/l;->KR()Z
move-result v1
invoke-virtual {v0, v1}, Lcom/subgraph/orchid/circuits/g;->bf(Z)I
move-result v0
.line 2169
if-lez v0, :cond_53
.line 2175
sget-object v0, Lcom/subgraph/orchid/circuits/c;->logger:Ljava/util/logging/Logger;
const-string v1, "Launching new internal circuit"
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 2176
new-instance v0, Lcom/subgraph/orchid/circuits/InternalCircuitImpl;
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
invoke-direct {v0, v1}, Lcom/subgraph/orchid/circuits/InternalCircuitImpl;-><init>(Lcom/subgraph/orchid/circuits/g;)V
.line 2177
new-instance v1, Lcom/subgraph/orchid/circuits/b;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/c;->pathChooser:Lcom/subgraph/orchid/circuits/path/d;
iget-object v3, p0, Lcom/subgraph/orchid/circuits/c;->bBM:Lcom/subgraph/orchid/d;
const/4 v4, 0x0
invoke-direct {v1, v2, v0, v3, v4}, Lcom/subgraph/orchid/circuits/b;-><init>(Lcom/subgraph/orchid/circuits/path/d;Lcom/subgraph/orchid/c;Lcom/subgraph/orchid/d;Z)V
.line 2178
new-instance v0, Lcom/subgraph/orchid/circuits/a;
iget-object v2, p0, Lcom/subgraph/orchid/circuits/c;->bBu:Lcom/subgraph/orchid/h;
iget-object v3, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
invoke-virtual {v3}, Lcom/subgraph/orchid/circuits/g;->KP()Z
move-result v3
invoke-direct {v0, v1, v2, v3}, Lcom/subgraph/orchid/circuits/a;-><init>(Lcom/subgraph/orchid/circuits/b;Lcom/subgraph/orchid/h;Z)V
.line 2179
iget-object v1, p0, Lcom/subgraph/orchid/circuits/c;->executor:Ljava/util/concurrent/Executor;
invoke-interface {v1, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
.line 2180
iget-object v0, p0, Lcom/subgraph/orchid/circuits/c;->bBL:Lcom/subgraph/orchid/circuits/g;
.line 2375
iget-object v1, v0, Lcom/subgraph/orchid/circuits/g;->bCh:Ljava/util/Queue;
monitor-enter v1
.line 2376
:try_start_a8
iget v2, v0, Lcom/subgraph/orchid/circuits/g;->bCj:I
add-int/lit8 v2, v2, 0x1
iput v2, v0, Lcom/subgraph/orchid/circuits/g;->bCj:I
.line 2377
monitor-exit v1
goto :goto_53
:catchall_b0
move-exception v0
monitor-exit v1
:try_end_b2
.catchall {:try_start_a8 .. :try_end_b2} :catchall_b0
throw v0
.end method