QueuingTransactionReceiptProcessor.smali
.class public Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;
.super Lorg/web3j/tx/response/TransactionReceiptProcessor;
.source "QueuingTransactionReceiptProcessor.java"
# instance fields
.field private final callback:Lorg/web3j/tx/response/Callback;
.field private final pendingTransactions:Ljava/util/concurrent/BlockingQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/BlockingQueue",
"<",
"Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;",
">;"
}
.end annotation
.end field
.field private final pollingAttemptsPerTxHash:I
.field private final scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
# direct methods
.method public constructor <init>(Lorg/web3j/protocol/Web3j;Lorg/web3j/tx/response/Callback;IJ)V
.registers 14
.prologue
.line 32
invoke-direct {p0, p1}, Lorg/web3j/tx/response/TransactionReceiptProcessor;-><init>(Lorg/web3j/protocol/Web3j;)V
.line 33
invoke-static {}, Lorg/web3j/utils/Async;->defaultExecutorService()Ljava/util/concurrent/ScheduledExecutorService;
move-result-object v0
iput-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
.line 34
iput-object p2, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->callback:Lorg/web3j/tx/response/Callback;
.line 35
new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue;
invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;-><init>()V
iput-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
.line 36
iput p3, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pollingAttemptsPerTxHash:I
.line 38
iget-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->scheduledExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
new-instance v1, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$1;
invoke-direct {v1, p0}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$1;-><init>(Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;)V
sget-object v6, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
move-wide v2, p4
move-wide v4, p4
invoke-interface/range {v0 .. v6}, Ljava/util/concurrent/ScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
.line 46
return-void
.end method
.method static synthetic access$000(Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;)V
.registers 1
.prologue
.line 21
invoke-direct {p0}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->sendTransactionReceiptRequests()V
return-void
.end method
.method private sendTransactionReceiptRequests()V
.registers 7
.prologue
.line 57
iget-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v0}, Ljava/util/concurrent/BlockingQueue;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_6
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_72
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;
.line 59
:try_start_12
invoke-virtual {v0}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;->getTransactionHash()Ljava/lang/String;
move-result-object v1
.line 60
invoke-virtual {p0, v1}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->sendTransactionReceiptRequest(Ljava/lang/String;)Lorg/web3j/protocol/core/methods/response/TransactionReceipt;
move-result-object v3
.line 62
if-eqz v3, :cond_33
.line 63
iget-object v1, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->callback:Lorg/web3j/tx/response/Callback;
invoke-interface {v1, v3}, Lorg/web3j/tx/response/Callback;->accept(Lorg/web3j/protocol/core/methods/response/TransactionReceipt;)V
.line 64
iget-object v1, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v1, v0}, Ljava/util/concurrent/BlockingQueue;->remove(Ljava/lang/Object;)Z
:try_end_26
.catch Ljava/io/IOException; {:try_start_12 .. :try_end_26} :catch_27
.catch Lorg/web3j/protocol/exceptions/TransactionException; {:try_start_12 .. :try_end_26} :catch_62
goto :goto_6
.line 75
:catch_27
move-exception v1
.line 76
iget-object v3, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v3, v0}, Ljava/util/concurrent/BlockingQueue;->remove(Ljava/lang/Object;)Z
.line 77
iget-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->callback:Lorg/web3j/tx/response/Callback;
invoke-interface {v0, v1}, Lorg/web3j/tx/response/Callback;->exception(Ljava/lang/Exception;)V
goto :goto_6
.line 66
:cond_33
:try_start_33
invoke-virtual {v0}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;->getCount()I
move-result v3
iget v4, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pollingAttemptsPerTxHash:I
if-ne v3, v4, :cond_6e
.line 67
new-instance v3, Lorg/web3j/protocol/exceptions/TransactionException;
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "No transaction receipt for txHash: "
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, "received after "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget v4, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pollingAttemptsPerTxHash:I
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, " attempts"
invoke-virtual {v1, v4}, 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-direct {v3, v1}, Lorg/web3j/protocol/exceptions/TransactionException;-><init>(Ljava/lang/String;)V
throw v3
:try_end_62
.catch Ljava/io/IOException; {:try_start_33 .. :try_end_62} :catch_27
.catch Lorg/web3j/protocol/exceptions/TransactionException; {:try_start_33 .. :try_end_62} :catch_62
.line 78
:catch_62
move-exception v1
.line 79
iget-object v3, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v3, v0}, Ljava/util/concurrent/BlockingQueue;->remove(Ljava/lang/Object;)Z
.line 80
iget-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->callback:Lorg/web3j/tx/response/Callback;
invoke-interface {v0, v1}, Lorg/web3j/tx/response/Callback;->exception(Ljava/lang/Exception;)V
goto :goto_6
.line 72
:cond_6e
:try_start_6e
invoke-virtual {v0}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;->incrementCount()V
:try_end_71
.catch Ljava/io/IOException; {:try_start_6e .. :try_end_71} :catch_27
.catch Lorg/web3j/protocol/exceptions/TransactionException; {:try_start_6e .. :try_end_71} :catch_62
goto :goto_6
.line 83
:cond_72
return-void
.end method
# virtual methods
.method public waitForTransactionReceipt(Ljava/lang/String;)Lorg/web3j/protocol/core/methods/response/TransactionReceipt;
.registers 4
.prologue
.line 51
iget-object v0, p0, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor;->pendingTransactions:Ljava/util/concurrent/BlockingQueue;
new-instance v1, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;
invoke-direct {v1, p1}, Lorg/web3j/tx/response/QueuingTransactionReceiptProcessor$RequestWrapper;-><init>(Ljava/lang/String;)V
invoke-interface {v0, v1}, Ljava/util/concurrent/BlockingQueue;->add(Ljava/lang/Object;)Z
.line 53
new-instance v0, Lorg/web3j/tx/response/EmptyTransactionReceipt;
invoke-direct {v0, p1}, Lorg/web3j/tx/response/EmptyTransactionReceipt;-><init>(Ljava/lang/String;)V
return-object v0
.end method