BlockingClientManager.smali
.class public Lorg/bitcoinj/net/BlockingClientManager;
.super Lcom/google/common/util/concurrent/b;
.source "BlockingClientManager.java"
# interfaces
.implements Lorg/bitcoinj/net/ClientConnectionManager;
# instance fields
.field private final clients:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/net/BlockingClient;",
">;"
}
.end annotation
.end field
.field private connectTimeoutMillis:I
.field private final socketFactory:Ljavax/net/SocketFactory;
# direct methods
.method public constructor <init>()V
.registers 2
.prologue
.line 45
invoke-direct {p0}, Lcom/google/common/util/concurrent/b;-><init>()V
.line 41
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
invoke-static {v0}, Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;)Ljava/util/Set;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
.line 43
const/16 v0, 0x3e8
iput v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->connectTimeoutMillis:I
.line 46
invoke-static {}, Ljavax/net/SocketFactory;->getDefault()Ljavax/net/SocketFactory;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->socketFactory:Ljavax/net/SocketFactory;
.line 47
return-void
.end method
.method public constructor <init>(Ljavax/net/SocketFactory;)V
.registers 3
.prologue
.line 53
invoke-direct {p0}, Lcom/google/common/util/concurrent/b;-><init>()V
.line 41
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
invoke-static {v0}, Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;)Ljava/util/Set;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
.line 43
const/16 v0, 0x3e8
iput v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->connectTimeoutMillis:I
.line 54
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljavax/net/SocketFactory;
iput-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->socketFactory:Ljavax/net/SocketFactory;
.line 55
return-void
.end method
# virtual methods
.method public closeConnections(I)V
.registers 6
.prologue
.line 91
invoke-virtual {p0}, Lorg/bitcoinj/net/BlockingClientManager;->isRunning()Z
move-result v0
if-nez v0, :cond_c
.line 92
new-instance v0, Ljava/lang/IllegalStateException;
invoke-direct {v0}, Ljava/lang/IllegalStateException;-><init>()V
throw v0
.line 93
:cond_c
iget-object v2, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
monitor-enter v2
.line 94
:try_start_f
iget-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v3
.line 95
:goto_15
add-int/lit8 v1, p1, -0x1
if-lez p1, :cond_2a
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2a
.line 96
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/net/BlockingClient;
invoke-virtual {v0}, Lorg/bitcoinj/net/BlockingClient;->closeConnection()V
move p1, v1
goto :goto_15
.line 97
:cond_2a
monitor-exit v2
return-void
:catchall_2c
move-exception v0
monitor-exit v2
:try_end_2e
.catchall {:try_start_f .. :try_end_2e} :catchall_2c
throw v0
.end method
.method public getConnectedClientCount()I
.registers 2
.prologue
.line 86
iget-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->size()I
move-result v0
return v0
.end method
.method public openConnection(Ljava/net/SocketAddress;Lorg/bitcoinj/net/StreamConnection;)Lcom/google/common/util/concurrent/y;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/net/SocketAddress;",
"Lorg/bitcoinj/net/StreamConnection;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Ljava/net/SocketAddress;",
">;"
}
.end annotation
.prologue
.line 60
:try_start_0
invoke-virtual {p0}, Lorg/bitcoinj/net/BlockingClientManager;->isRunning()Z
move-result v0
if-nez v0, :cond_13
.line 61
new-instance v0, Ljava/lang/IllegalStateException;
invoke-direct {v0}, Ljava/lang/IllegalStateException;-><init>()V
throw v0
:try_end_c
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_c} :catch_c
.line 63
:catch_c
move-exception v0
.line 64
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 62
:cond_13
:try_start_13
new-instance v0, Lorg/bitcoinj/net/BlockingClient;
iget v3, p0, Lorg/bitcoinj/net/BlockingClientManager;->connectTimeoutMillis:I
iget-object v4, p0, Lorg/bitcoinj/net/BlockingClientManager;->socketFactory:Ljavax/net/SocketFactory;
iget-object v5, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
move-object v1, p1
move-object v2, p2
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/net/BlockingClient;-><init>(Ljava/net/SocketAddress;Lorg/bitcoinj/net/StreamConnection;ILjavax/net/SocketFactory;Ljava/util/Set;)V
invoke-virtual {v0}, Lorg/bitcoinj/net/BlockingClient;->getConnectFuture()Lcom/google/common/util/concurrent/y;
:try_end_23
.catch Ljava/io/IOException; {:try_start_13 .. :try_end_23} :catch_c
move-result-object v0
return-object v0
.end method
.method public setConnectTimeoutMillis(I)V
.registers 2
.prologue
.line 70
iput p1, p0, Lorg/bitcoinj/net/BlockingClientManager;->connectTimeoutMillis:I
.line 71
return-void
.end method
.method protected shutDown()V
.registers 4
.prologue
.line 78
iget-object v1, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
monitor-enter v1
.line 79
:try_start_3
iget-object v0, p0, Lorg/bitcoinj/net/BlockingClientManager;->clients:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_9
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1c
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/net/BlockingClient;
.line 80
invoke-virtual {v0}, Lorg/bitcoinj/net/BlockingClient;->closeConnection()V
goto :goto_9
.line 81
:catchall_19
move-exception v0
monitor-exit v1
:try_end_1b
.catchall {:try_start_3 .. :try_end_1b} :catchall_19
throw v0
:cond_1c
:try_start_1c
monitor-exit v1
:try_end_1d
.catchall {:try_start_1c .. :try_end_1d} :catchall_19
return-void
.end method
.method protected startUp()V
.registers 1
.prologue
.line 74
return-void
.end method