MemoryFullPrunedBlockStore.smali
.class public Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;
.super Ljava/lang/Object;
.source "MemoryFullPrunedBlockStore.java"
# interfaces
.implements Lorg/bitcoinj/store/FullPrunedBlockStore;
# instance fields
.field private blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lorg/bitcoinj/store/TransactionalHashMap",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;",
">;"
}
.end annotation
.end field
.field private chainHead:Lorg/bitcoinj/core/StoredBlock;
.field private fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lorg/bitcoinj/store/TransactionalMultiKeyHashMap",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Ljava/lang/Integer;",
"Lorg/bitcoinj/core/StoredUndoableBlock;",
">;"
}
.end annotation
.end field
.field private fullStoreDepth:I
.field private params:Lorg/bitcoinj/core/NetworkParameters;
.field private transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lorg/bitcoinj/store/TransactionalHashMap",
"<",
"Lorg/bitcoinj/store/StoredTransactionOutPoint;",
"Lorg/bitcoinj/core/UTXO;",
">;"
}
.end annotation
.end field
.field private verifiedChainHead:Lorg/bitcoinj/core/StoredBlock;
# direct methods
.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;I)V
.registers 7
.prologue
.line 255
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 256
new-instance v0, Lorg/bitcoinj/store/TransactionalHashMap;
invoke-direct {v0}, Lorg/bitcoinj/store/TransactionalHashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
.line 257
new-instance v0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-direct {v0}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
.line 258
new-instance v0, Lorg/bitcoinj/store/TransactionalHashMap;
invoke-direct {v0}, Lorg/bitcoinj/store/TransactionalHashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
.line 259
if-lez p2, :cond_50
:goto_1a
iput p2, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullStoreDepth:I
.line 262
:try_start_1c
new-instance v0, Lorg/bitcoinj/core/StoredBlock;
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getGenesisBlock()Lorg/bitcoinj/core/Block;
move-result-object v1
invoke-virtual {v1}, Lorg/bitcoinj/core/Block;->cloneAsHeader()Lorg/bitcoinj/core/Block;
move-result-object v1
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getGenesisBlock()Lorg/bitcoinj/core/Block;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/Block;->getWork()Ljava/math/BigInteger;
move-result-object v2
const/4 v3, 0x0
invoke-direct {v0, v1, v2, v3}, Lorg/bitcoinj/core/StoredBlock;-><init>(Lorg/bitcoinj/core/Block;Ljava/math/BigInteger;I)V
.line 1232
new-instance v1, Ljava/util/LinkedList;
invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V
.line 265
new-instance v2, Lorg/bitcoinj/core/StoredUndoableBlock;
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getGenesisBlock()Lorg/bitcoinj/core/Block;
move-result-object v3
invoke-virtual {v3}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-direct {v2, v3, v1}, Lorg/bitcoinj/core/StoredUndoableBlock;-><init>(Lorg/bitcoinj/core/Sha256Hash;Ljava/util/List;)V
.line 266
invoke-virtual {p0, v0, v2}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->put(Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/StoredUndoableBlock;)V
.line 267
invoke-virtual {p0, v0}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->setChainHead(Lorg/bitcoinj/core/StoredBlock;)V
.line 268
invoke-virtual {p0, v0}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->setVerifiedChainHead(Lorg/bitcoinj/core/StoredBlock;)V
.line 269
iput-object p1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->params:Lorg/bitcoinj/core/NetworkParameters;
:try_end_4f
.catch Lorg/bitcoinj/store/BlockStoreException; {:try_start_1c .. :try_end_4f} :catch_52
.catch Lorg/bitcoinj/core/VerificationException; {:try_start_1c .. :try_end_4f} :catch_59
.line 274
return-void
.line 259
:cond_50
const/4 p2, 0x1
goto :goto_1a
.line 270
:catch_52
move-exception v0
.line 271
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 272
:catch_59
move-exception v0
.line 273
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
# virtual methods
.method public declared-synchronized abortDatabaseBatchWrite()V
.registers 2
.prologue
.line 387
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->abortDatabaseBatchWrite()V
.line 388
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->AbortTransaction()V
.line 389
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->abortDatabaseBatchWrite()V
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_12
.line 390
monitor-exit p0
return-void
.line 387
:catchall_12
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized addUnspentTransactionOutput(Lorg/bitcoinj/core/UTXO;)V
.registers 4
.prologue
.line 360
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 361
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
new-instance v1, Lorg/bitcoinj/store/StoredTransactionOutPoint;
invoke-direct {v1, p1}, Lorg/bitcoinj/store/StoredTransactionOutPoint;-><init>(Lorg/bitcoinj/core/UTXO;)V
invoke-virtual {v0, v1, p1}, Lorg/bitcoinj/store/TransactionalHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_12
.catchall {:try_start_1 .. :try_end_12} :catchall_14
.line 362
monitor-exit p0
return-void
.line 360
:catchall_14
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized beginDatabaseBatchWrite()V
.registers 2
.prologue
.line 373
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->beginDatabaseBatchWrite()V
.line 374
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->BeginTransaction()V
.line 375
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->beginDatabaseBatchWrite()V
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_12
.line 376
monitor-exit p0
return-void
.line 373
:catchall_12
move-exception v0
monitor-exit p0
throw v0
.end method
.method public close()V
.registers 2
.prologue
const/4 v0, 0x0
.line 346
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
.line 347
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
.line 348
iput-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
.line 349
return-void
.end method
.method public declared-synchronized commitDatabaseBatchWrite()V
.registers 2
.prologue
.line 380
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->commitDatabaseBatchWrite()V
.line 381
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->CommitTransaction()V
.line 382
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->commitDatabaseBatchWrite()V
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_12
.line 383
monitor-exit p0
return-void
.line 380
:catchall_12
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized get(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/StoredBlock;
.registers 4
.prologue
.line 295
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 296
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0, p1}, Lorg/bitcoinj/store/TransactionalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_18
.line 297
if-nez v0, :cond_15
const/4 v0, 0x0
:goto_13
monitor-exit p0
return-object v0
:cond_15
:try_start_15
iget-object v0, v0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;->block:Lorg/bitcoinj/core/StoredBlock;
:try_end_17
.catchall {:try_start_15 .. :try_end_17} :catchall_18
goto :goto_13
.line 295
:catchall_18
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getChainHead()Lorg/bitcoinj/core/StoredBlock;
.registers 3
.prologue
.line 317
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 318
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->chainHead:Lorg/bitcoinj/core/StoredBlock;
:try_end_a
.catchall {:try_start_1 .. :try_end_a} :catchall_c
monitor-exit p0
return-object v0
.line 317
:catchall_c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public getChainHeadHeight()I
.registers 3
.prologue
.line 408
:try_start_0
invoke-virtual {p0}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->getVerifiedChainHead()Lorg/bitcoinj/core/StoredBlock;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
:try_end_7
.catch Lorg/bitcoinj/store/BlockStoreException; {:try_start_0 .. :try_end_7} :catch_9
move-result v0
return v0
.line 409
:catch_9
move-exception v0
.line 410
new-instance v1, Lorg/bitcoinj/core/UTXOProviderException;
invoke-direct {v1, v0}, Lorg/bitcoinj/core/UTXOProviderException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public declared-synchronized getOnceUndoableStoredBlock(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/StoredBlock;
.registers 4
.prologue
.line 303
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 304
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0, p1}, Lorg/bitcoinj/store/TransactionalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;
.line 305
if-eqz v0, :cond_1a
iget-boolean v1, v0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;->wasUndoable:Z
if-eqz v1, :cond_1a
iget-object v0, v0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;->block:Lorg/bitcoinj/core/StoredBlock;
:try_end_18
.catchall {:try_start_1 .. :try_end_18} :catchall_1c
:goto_18
monitor-exit p0
return-object v0
:cond_1a
const/4 v0, 0x0
goto :goto_18
.line 303
:catchall_1c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public getOpenTransactionOutputs(Ljava/util/List;)Ljava/util/List;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Address;",
">;)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/UTXO;",
">;"
}
.end annotation
.prologue
.line 418
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 419
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->values()Ljava/util/List;
move-result-object v0
.line 420
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_f
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/UTXO;
.line 421
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_1f
:goto_1f
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_f
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/Address;
.line 422
invoke-virtual {v0}, Lorg/bitcoinj/core/UTXO;->getAddress()Ljava/lang/String;
move-result-object v5
invoke-virtual {v1}, Lorg/bitcoinj/core/Address;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v5, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_1f
.line 423
invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_1f
.line 427
:cond_3d
return-object v2
.end method
.method public getParams()Lorg/bitcoinj/core/NetworkParameters;
.registers 2
.prologue
.line 402
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->params:Lorg/bitcoinj/core/NetworkParameters;
return-object v0
.end method
.method public declared-synchronized getTransactionOutput(Lorg/bitcoinj/core/Sha256Hash;J)Lorg/bitcoinj/core/UTXO;
.registers 6
.prologue
.line 354
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 355
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
new-instance v1, Lorg/bitcoinj/store/StoredTransactionOutPoint;
invoke-direct {v1, p1, p2, p3}, Lorg/bitcoinj/store/StoredTransactionOutPoint;-><init>(Lorg/bitcoinj/core/Sha256Hash;J)V
invoke-virtual {v0, v1}, Lorg/bitcoinj/store/TransactionalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/UTXO;
:try_end_15
.catchall {:try_start_1 .. :try_end_15} :catchall_17
monitor-exit p0
return-object v0
.line 354
:catchall_17
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getUndoBlock(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/StoredUndoableBlock;
.registers 4
.prologue
.line 311
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 312
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {v0, p1}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/StoredUndoableBlock;
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_12
monitor-exit p0
return-object v0
.line 311
:catchall_12
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getVerifiedChainHead()Lorg/bitcoinj/core/StoredBlock;
.registers 3
.prologue
.line 329
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 330
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->verifiedChainHead:Lorg/bitcoinj/core/StoredBlock;
:try_end_a
.catchall {:try_start_1 .. :try_end_a} :catchall_c
monitor-exit p0
return-object v0
.line 329
:catchall_c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized hasUnspentOutputs(Lorg/bitcoinj/core/Sha256Hash;I)Z
.registers 7
.prologue
const/4 v0, 0x0
.line 394
monitor-enter p0
move v1, v0
:goto_3
if-ge v1, p2, :cond_d
.line 395
int-to-long v2, v1
:try_start_6
invoke-virtual {p0, p1, v2, v3}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->getTransactionOutput(Lorg/bitcoinj/core/Sha256Hash;J)Lorg/bitcoinj/core/UTXO;
:try_end_9
.catchall {:try_start_6 .. :try_end_9} :catchall_12
move-result-object v2
if-eqz v2, :cond_f
.line 396
const/4 v0, 0x1
.line 397
:cond_d
monitor-exit p0
return v0
.line 394
:cond_f
add-int/lit8 v1, v1, 0x1
goto :goto_3
:catchall_12
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized put(Lorg/bitcoinj/core/StoredBlock;)V
.registers 6
.prologue
.line 279
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 280
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
.line 281
iget-object v1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
new-instance v2, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;
const/4 v3, 0x0
invoke-direct {v2, p1, v3}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;-><init>(Lorg/bitcoinj/core/StoredBlock;Z)V
invoke-virtual {v1, v0, v2}, Lorg/bitcoinj/store/TransactionalHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_1b
.catchall {:try_start_1 .. :try_end_1b} :catchall_1d
.line 282
monitor-exit p0
return-void
.line 279
:catchall_1d
move-exception v0
monitor-exit p0
throw v0
.end method
.method public final declared-synchronized put(Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/StoredUndoableBlock;)V
.registers 7
.prologue
.line 286
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 287
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
.line 288
iget-object v1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-virtual {v1, v0, v2, p2}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
.line 289
iget-object v1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
new-instance v2, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;
const/4 v3, 0x1
invoke-direct {v2, p1, v3}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore$StoredBlockAndWasUndoableFlag;-><init>(Lorg/bitcoinj/core/StoredBlock;Z)V
invoke-virtual {v1, v0, v2}, Lorg/bitcoinj/store/TransactionalHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_28
.catchall {:try_start_1 .. :try_end_28} :catchall_2a
.line 290
monitor-exit p0
return-void
.line 286
:catchall_2a
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized removeUnspentTransactionOutput(Lorg/bitcoinj/core/UTXO;)V
.registers 4
.prologue
.line 366
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 367
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->transactionOutputMap:Lorg/bitcoinj/store/TransactionalHashMap;
new-instance v1, Lorg/bitcoinj/store/StoredTransactionOutPoint;
invoke-direct {v1, p1}, Lorg/bitcoinj/store/StoredTransactionOutPoint;-><init>(Lorg/bitcoinj/core/UTXO;)V
invoke-virtual {v0, v1}, Lorg/bitcoinj/store/TransactionalHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_20
.line 368
new-instance v0, Lorg/bitcoinj/store/BlockStoreException;
const-string v1, "Tried to remove a UTXO from MemoryFullPrunedBlockStore that it didn\'t have!"
invoke-direct {v0, v1}, Lorg/bitcoinj/store/BlockStoreException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_1d
.catchall {:try_start_1 .. :try_end_1d} :catchall_1d
.line 366
:catchall_1d
move-exception v0
monitor-exit p0
throw v0
.line 369
:cond_20
monitor-exit p0
return-void
.end method
.method public final declared-synchronized setChainHead(Lorg/bitcoinj/core/StoredBlock;)V
.registers 4
.prologue
.line 323
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 324
iput-object p1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->chainHead:Lorg/bitcoinj/core/StoredBlock;
:try_end_a
.catchall {:try_start_1 .. :try_end_a} :catchall_c
.line 325
monitor-exit p0
return-void
.line 323
:catchall_c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public final declared-synchronized setVerifiedChainHead(Lorg/bitcoinj/core/StoredBlock;)V
.registers 5
.prologue
.line 335
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->blockMap:Lorg/bitcoinj/store/TransactionalHashMap;
const-string v1, "MemoryFullPrunedBlockStore is closed"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 336
iput-object p1, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->verifiedChainHead:Lorg/bitcoinj/core/StoredBlock;
.line 337
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->chainHead:Lorg/bitcoinj/core/StoredBlock;
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
move-result v0
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
move-result v1
if-ge v0, v1, :cond_19
.line 338
invoke-virtual {p0, p1}, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->setChainHead(Lorg/bitcoinj/core/StoredBlock;)V
.line 341
:cond_19
iget-object v0, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullBlockMap:Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
move-result v1
iget v2, p0, Lorg/bitcoinj/store/MemoryFullPrunedBlockStore;->fullStoreDepth:I
sub-int/2addr v1, v2
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->removeByMultiKey(Ljava/lang/Object;)V
:try_end_29
.catchall {:try_start_1 .. :try_end_29} :catchall_2b
.line 342
monitor-exit p0
return-void
.line 335
:catchall_2b
move-exception v0
monitor-exit p0
throw v0
.end method