d.smali
.class public Lcom/subgraph/orchid/socks/d;
.super Ljava/lang/Object;
.source "SocksPortListenerImpl.java"
# interfaces
.implements Lcom/subgraph/orchid/z;
# static fields
.field private static final logger:Ljava/util/logging/Logger;
# instance fields
.field private final bBr:Lcom/subgraph/orchid/TorConfig;
.field private final bBv:Lcom/subgraph/orchid/e;
.field private bBz:Z
.field private final bKy:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private final bKz:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/lang/Integer;",
"Lcom/subgraph/orchid/socks/e;",
">;"
}
.end annotation
.end field
.field private final executor:Ljava/util/concurrent/ExecutorService;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 20
const-class v0, Lcom/subgraph/orchid/socks/d;
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/socks/d;->logger:Ljava/util/logging/Logger;
return-void
.end method
.method public constructor <init>(Lcom/subgraph/orchid/TorConfig;Lcom/subgraph/orchid/e;)V
.registers 4
.prologue
.line 28
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 21
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
.line 22
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKz:Ljava/util/Map;
.line 29
iput-object p1, p0, Lcom/subgraph/orchid/socks/d;->bBr:Lcom/subgraph/orchid/TorConfig;
.line 30
iput-object p2, p0, Lcom/subgraph/orchid/socks/d;->bBv:Lcom/subgraph/orchid/e;
.line 31
invoke-static {}, Ljava/util/concurrent/Executors;->newCachedThreadPool()Ljava/util/concurrent/ExecutorService;
move-result-object v0
iput-object v0, p0, Lcom/subgraph/orchid/socks/d;->executor:Ljava/util/concurrent/ExecutorService;
.line 32
return-void
.end method
.method static synthetic a(Lcom/subgraph/orchid/socks/d;Ljava/net/Socket;)Ljava/lang/Runnable;
.registers 5
.prologue
.line 2074
new-instance v0, Lcom/subgraph/orchid/socks/c;
iget-object v1, p0, Lcom/subgraph/orchid/socks/d;->bBr:Lcom/subgraph/orchid/TorConfig;
iget-object v2, p0, Lcom/subgraph/orchid/socks/d;->bBv:Lcom/subgraph/orchid/e;
invoke-direct {v0, v1, p1, v2}, Lcom/subgraph/orchid/socks/c;-><init>(Lcom/subgraph/orchid/TorConfig;Ljava/net/Socket;Lcom/subgraph/orchid/e;)V
.line 19
return-object v0
.end method
.method static synthetic a(Lcom/subgraph/orchid/socks/d;)Ljava/util/Set;
.registers 2
.prologue
.line 19
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
return-object v0
.end method
.method static synthetic access$000()Ljava/util/logging/Logger;
.registers 1
.prologue
.line 19
sget-object v0, Lcom/subgraph/orchid/socks/d;->logger:Ljava/util/logging/Logger;
return-object v0
.end method
.method static synthetic b(Lcom/subgraph/orchid/socks/d;)Ljava/util/Map;
.registers 2
.prologue
.line 19
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKz:Ljava/util/Map;
return-object v0
.end method
.method static synthetic c(Lcom/subgraph/orchid/socks/d;)Ljava/util/concurrent/ExecutorService;
.registers 2
.prologue
.line 19
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->executor:Ljava/util/concurrent/ExecutorService;
return-object v0
.end method
# virtual methods
.method public final JU()V
.registers 6
.prologue
.line 39
iget-object v1, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
monitor-enter v1
.line 40
:try_start_3
iget-boolean v0, p0, Lcom/subgraph/orchid/socks/d;->bBz:Z
if-eqz v0, :cond_12
.line 41
new-instance v0, Ljava/lang/IllegalStateException;
const-string v2, "Cannot add listening port because Socks proxy has been stopped"
invoke-direct {v0, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 53
:catchall_f
move-exception v0
monitor-exit v1
:try_end_11
.catchall {:try_start_3 .. :try_end_11} :catchall_f
throw v0
.line 43
:cond_12
:try_start_12
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
const/16 v2, 0x23be
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
.line 44
monitor-exit v1
.line 53
:goto_21
return-void
.line 45
:cond_22
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
const/16 v2, 0x23be
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
:try_end_2d
.catchall {:try_start_12 .. :try_end_2d} :catchall_f
.line 1068
:try_start_2d
new-instance v0, Lcom/subgraph/orchid/socks/e;
invoke-direct {v0, p0}, Lcom/subgraph/orchid/socks/e;-><init>(Lcom/subgraph/orchid/socks/d;)V
.line 1069
iget-object v2, p0, Lcom/subgraph/orchid/socks/d;->bKz:Ljava/util/Map;
const/16 v3, 0x23be
invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-interface {v2, v3, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1070
iget-object v2, p0, Lcom/subgraph/orchid/socks/d;->executor:Ljava/util/concurrent/ExecutorService;
invoke-interface {v2, v0}, Ljava/util/concurrent/ExecutorService;->execute(Ljava/lang/Runnable;)V
.line 48
sget-object v0, Lcom/subgraph/orchid/socks/d;->logger:Ljava/util/logging/Logger;
const-string v2, "Listening for SOCKS connections on port 9150"
invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
:try_end_49
.catch Ljava/io/IOException; {:try_start_2d .. :try_end_49} :catch_4b
.catchall {:try_start_2d .. :try_end_49} :catchall_f
.line 53
:try_start_49
monitor-exit v1
goto :goto_21
.line 49
:catch_4b
move-exception v0
.line 50
iget-object v2, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
const/16 v3, 0x23be
invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-interface {v2, v3}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 51
new-instance v2, Lcom/subgraph/orchid/TorException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Failed to listen on port 9150 : "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, 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-direct {v2, v0}, Lcom/subgraph/orchid/TorException;-><init>(Ljava/lang/String;)V
throw v2
:try_end_70
.catchall {:try_start_49 .. :try_end_70} :catchall_f
.end method
.method public final stop()V
.registers 5
.prologue
.line 58
iget-object v1, p0, Lcom/subgraph/orchid/socks/d;->bKy:Ljava/util/Set;
monitor-enter v1
.line 59
:try_start_3
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->bKz:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_d
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_24
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/subgraph/orchid/socks/e;
.line 1088
const/4 v3, 0x1
iput-boolean v3, v0, Lcom/subgraph/orchid/socks/e;->stopped:Z
:try_end_1c
.catchall {:try_start_3 .. :try_end_1c} :catchall_2e
.line 1090
:try_start_1c
iget-object v0, v0, Lcom/subgraph/orchid/socks/e;->bKA:Ljava/net/ServerSocket;
invoke-virtual {v0}, Ljava/net/ServerSocket;->close()V
:try_end_21
.catch Ljava/io/IOException; {:try_start_1c .. :try_end_21} :catch_22
.catchall {:try_start_1c .. :try_end_21} :catchall_2e
goto :goto_d
.line 61
:catch_22
move-exception v0
goto :goto_d
.line 62
:cond_24
:try_start_24
iget-object v0, p0, Lcom/subgraph/orchid/socks/d;->executor:Ljava/util/concurrent/ExecutorService;
invoke-interface {v0}, Ljava/util/concurrent/ExecutorService;->shutdownNow()Ljava/util/List;
.line 63
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/subgraph/orchid/socks/d;->bBz:Z
.line 64
monitor-exit v1
return-void
:catchall_2e
move-exception v0
monitor-exit v1
:try_end_30
.catchall {:try_start_24 .. :try_end_30} :catchall_2e
throw v0
.end method