SeedPeers.smali
.class public Lorg/bitcoinj/net/discovery/SeedPeers;
.super Ljava/lang/Object;
.source "SeedPeers.java"
# interfaces
.implements Lorg/bitcoinj/net/discovery/PeerDiscovery;
# instance fields
.field private params:Lorg/bitcoinj/core/NetworkParameters;
.field private pnseedIndex:I
.field private seedAddrs:[I
# direct methods
.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;)V
.registers 3
.prologue
.line 43
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getAddrSeeds()[I
move-result-object v0
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/net/discovery/SeedPeers;-><init>([ILorg/bitcoinj/core/NetworkParameters;)V
.line 44
return-void
.end method
.method public constructor <init>([ILorg/bitcoinj/core/NetworkParameters;)V
.registers 3
.prologue
.line 52
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 53
iput-object p1, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
.line 54
iput-object p2, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->params:Lorg/bitcoinj/core/NetworkParameters;
.line 55
return-void
.end method
.method private allPeers()[Ljava/net/InetSocketAddress;
.registers 6
.prologue
.line 98
iget-object v0, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
array-length v0, v0
new-array v1, v0, [Ljava/net/InetSocketAddress;
.line 99
const/4 v0, 0x0
:goto_6
iget-object v2, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
array-length v2, v2
if-ge v0, v2, :cond_23
.line 100
new-instance v2, Ljava/net/InetSocketAddress;
iget-object v3, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
aget v3, v3, v0
invoke-direct {p0, v3}, Lorg/bitcoinj/net/discovery/SeedPeers;->convertAddress(I)Ljava/net/InetAddress;
move-result-object v3
iget-object v4, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v4}, Lorg/bitcoinj/core/NetworkParameters;->getPort()I
move-result v4
invoke-direct {v2, v3, v4}, Ljava/net/InetSocketAddress;-><init>(Ljava/net/InetAddress;I)V
aput-object v2, v1, v0
.line 99
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 102
:cond_23
return-object v1
.end method
.method private convertAddress(I)Ljava/net/InetAddress;
.registers 5
.prologue
.line 106
const/4 v0, 0x4
new-array v0, v0, [B
.line 107
const/4 v1, 0x0
and-int/lit16 v2, p1, 0xff
int-to-byte v2, v2
aput-byte v2, v0, v1
.line 108
const/4 v1, 0x1
shr-int/lit8 v2, p1, 0x8
and-int/lit16 v2, v2, 0xff
int-to-byte v2, v2
aput-byte v2, v0, v1
.line 109
const/4 v1, 0x2
shr-int/lit8 v2, p1, 0x10
and-int/lit16 v2, v2, 0xff
int-to-byte v2, v2
aput-byte v2, v0, v1
.line 110
const/4 v1, 0x3
shr-int/lit8 v2, p1, 0x18
and-int/lit16 v2, v2, 0xff
int-to-byte v2, v2
aput-byte v2, v0, v1
.line 111
invoke-static {v0}, Ljava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress;
move-result-object v0
return-object v0
.end method
.method private nextPeer()Ljava/net/InetSocketAddress;
.registers 5
.prologue
.line 75
iget-object v0, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
if-eqz v0, :cond_9
iget-object v0, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
array-length v0, v0
if-nez v0, :cond_11
.line 76
:cond_9
new-instance v0, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;
const-string v1, "No IP address seeds configured; unable to find any peers"
invoke-direct {v0, v1}, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;-><init>(Ljava/lang/String;)V
throw v0
.line 78
:cond_11
iget v0, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->pnseedIndex:I
iget-object v1, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
array-length v1, v1
if-lt v0, v1, :cond_1a
const/4 v0, 0x0
.line 79
:goto_19
return-object v0
:cond_1a
new-instance v0, Ljava/net/InetSocketAddress;
iget-object v1, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->seedAddrs:[I
iget v2, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->pnseedIndex:I
add-int/lit8 v3, v2, 0x1
iput v3, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->pnseedIndex:I
aget v1, v1, v2
invoke-direct {p0, v1}, Lorg/bitcoinj/net/discovery/SeedPeers;->convertAddress(I)Ljava/net/InetAddress;
move-result-object v1
iget-object v2, p0, Lorg/bitcoinj/net/discovery/SeedPeers;->params:Lorg/bitcoinj/core/NetworkParameters;
.line 80
invoke-virtual {v2}, Lorg/bitcoinj/core/NetworkParameters;->getPort()I
move-result v2
invoke-direct {v0, v1, v2}, Ljava/net/InetSocketAddress;-><init>(Ljava/net/InetAddress;I)V
goto :goto_19
.end method
# virtual methods
.method public getPeer()Ljava/net/InetSocketAddress;
.registers 3
.prologue
.line 67
:try_start_0
invoke-direct {p0}, Lorg/bitcoinj/net/discovery/SeedPeers;->nextPeer()Ljava/net/InetSocketAddress;
:try_end_3
.catch Ljava/net/UnknownHostException; {:try_start_0 .. :try_end_3} :catch_5
move-result-object v0
return-object v0
.line 68
:catch_5
move-exception v0
.line 69
new-instance v1, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;
invoke-direct {v1, v0}, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public getPeers(JJLjava/util/concurrent/TimeUnit;)[Ljava/net/InetSocketAddress;
.registers 9
.prologue
.line 88
const-wide/16 v0, 0x0
cmp-long v0, p1, v0
if-eqz v0, :cond_1b
.line 89
new-instance v0, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Pre-determined peers cannot be filtered by services: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1, p2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;-><init>(Ljava/lang/String;)V
throw v0
.line 91
:cond_1b
:try_start_1b
invoke-direct {p0}, Lorg/bitcoinj/net/discovery/SeedPeers;->allPeers()[Ljava/net/InetSocketAddress;
:try_end_1e
.catch Ljava/net/UnknownHostException; {:try_start_1b .. :try_end_1e} :catch_20
move-result-object v0
return-object v0
.line 92
:catch_20
move-exception v0
.line 93
new-instance v1, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;
invoke-direct {v1, v0}, Lorg/bitcoinj/net/discovery/PeerDiscoveryException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public shutdown()V
.registers 1
.prologue
.line 116
return-void
.end method