mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-02 18:47:06 -04:00
Fix bug with missing broadcast. Add total traffic info
This commit is contained in:
parent
fc1ab8a346
commit
92ad387d70
22 changed files with 48 additions and 180 deletions
|
@ -83,9 +83,8 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
FIAT_PAYMENT_RECEIPT_MSG_SENT(Phase.FIAT_RECEIVED),
|
||||
FIAT_PAYMENT_RECEIPT_MSG_RECEIVED(Phase.FIAT_RECEIVED),
|
||||
|
||||
PAYOUT_TX_COMMITTED(Phase.PAYOUT_PAID),
|
||||
PAYOUT_TX_SENT(Phase.PAYOUT_PAID),
|
||||
PAYOUT_TX_RECEIVED(Phase.PAYOUT_PAID),
|
||||
PAYOUT_TX_RECEIVED_AND_COMMITTED(Phase.PAYOUT_PAID),
|
||||
PAYOUT_BROAD_CASTED(Phase.PAYOUT_PAID),
|
||||
|
||||
WITHDRAW_COMPLETED(Phase.WITHDRAWN);
|
||||
|
|
|
@ -31,7 +31,6 @@ import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
|||
import io.bitsquare.trade.protocol.trade.tasks.buyer.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.offerer.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.InitWaitPeriodForOpenDispute;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -183,7 +182,6 @@ public class BuyerAsOffererProtocol extends TradeProtocol implements BuyerProtoc
|
|||
taskRunner.addTasks(
|
||||
ProcessFinalizePayoutTxRequest.class,
|
||||
SignAndFinalizePayoutTx.class,
|
||||
CommitPayoutTx.class,
|
||||
SendPayoutTxFinalizedMessage.class,
|
||||
BroadcastAfterLockTime.class
|
||||
);
|
||||
|
|
|
@ -30,7 +30,6 @@ import io.bitsquare.trade.protocol.trade.messages.PublishDepositTxRequest;
|
|||
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.buyer.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -171,7 +170,6 @@ public class BuyerAsTakerProtocol extends TradeProtocol implements BuyerProtocol
|
|||
taskRunner.addTasks(
|
||||
ProcessFinalizePayoutTxRequest.class,
|
||||
SignAndFinalizePayoutTx.class,
|
||||
CommitPayoutTx.class,
|
||||
SendPayoutTxFinalizedMessage.class,
|
||||
BroadcastAfterLockTime.class
|
||||
);
|
||||
|
|
|
@ -27,7 +27,6 @@ import io.bitsquare.trade.protocol.trade.messages.*;
|
|||
import io.bitsquare.trade.protocol.trade.tasks.offerer.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.seller.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.InitWaitPeriodForOpenDispute;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -188,7 +187,6 @@ public class SellerAsOffererProtocol extends TradeProtocol implements SellerProt
|
|||
|
||||
taskRunner.addTasks(
|
||||
ProcessPayoutTxFinalizedMessage.class,
|
||||
CommitPayoutTx.class,
|
||||
BroadcastAfterLockTime.class
|
||||
);
|
||||
taskRunner.run();
|
||||
|
|
|
@ -29,7 +29,6 @@ import io.bitsquare.trade.protocol.trade.messages.PublishDepositTxRequest;
|
|||
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.seller.*;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -187,7 +186,6 @@ public class SellerAsTakerProtocol extends TradeProtocol implements SellerProtoc
|
|||
|
||||
taskRunner.addTasks(
|
||||
ProcessPayoutTxFinalizedMessage.class,
|
||||
CommitPayoutTx.class,
|
||||
BroadcastAfterLockTime.class
|
||||
);
|
||||
taskRunner.run();
|
||||
|
|
|
@ -57,6 +57,7 @@ public class SignAndFinalizePayoutTx extends TradeTask {
|
|||
);
|
||||
|
||||
trade.setPayoutTx(transaction);
|
||||
trade.setState(Trade.State.PAYOUT_TX_RECEIVED_AND_COMMITTED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
|
|
|
@ -44,14 +44,15 @@ public class ProcessPayoutTxFinalizedMessage extends TradeTask {
|
|||
checkTradeId(processModel.getId(), message);
|
||||
checkNotNull(message);
|
||||
checkArgument(message.payoutTx != null);
|
||||
trade.setPayoutTx(processModel.getWalletService().getTransactionFromSerializedTx(message.payoutTx));
|
||||
trade.setPayoutTx(processModel.getTradeWalletService().addTransactionToWallet(message.payoutTx));
|
||||
|
||||
|
||||
// update to the latest peer address of our peer if the message is correct
|
||||
trade.setTradingPeerNodeAddress(processModel.getTempTradingPeerNodeAddress());
|
||||
|
||||
removeMailboxMessageAfterProcessing();
|
||||
|
||||
trade.setState(Trade.State.PAYOUT_TX_RECEIVED);
|
||||
trade.setState(Trade.State.PAYOUT_TX_RECEIVED_AND_COMMITTED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
|
|
|
@ -32,6 +32,8 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
public class BroadcastAfterLockTime extends TradeTask {
|
||||
private static final Logger log = LoggerFactory.getLogger(BroadcastAfterLockTime.class);
|
||||
|
||||
|
@ -67,19 +69,14 @@ public class BroadcastAfterLockTime extends TradeTask {
|
|||
}
|
||||
|
||||
private void broadcastTx() {
|
||||
boolean needsBroadCast = true;
|
||||
Transaction walletTx = processModel.getTradeWalletService().getWalletTx(trade.getPayoutTx().getHash());
|
||||
if (walletTx != null) {
|
||||
TransactionConfidence.ConfidenceType confidenceType = walletTx.getConfidence().getConfidenceType();
|
||||
if (confidenceType.equals(TransactionConfidence.ConfidenceType.PENDING) ||
|
||||
confidenceType.equals(TransactionConfidence.ConfidenceType.BUILDING)) {
|
||||
needsBroadCast = false;
|
||||
trade.setState(Trade.State.PAYOUT_BROAD_CASTED);
|
||||
complete();
|
||||
}
|
||||
}
|
||||
if (needsBroadCast) {
|
||||
processModel.getTradeWalletService().broadcastTx(trade.getPayoutTx(), new FutureCallback<Transaction>() {
|
||||
Transaction payoutTx = trade.getPayoutTx();
|
||||
checkNotNull(payoutTx, "payoutTx must not be null at BroadcastAfterLockTime.broadcastTx");
|
||||
TransactionConfidence.ConfidenceType confidenceType = payoutTx.getConfidence().getConfidenceType();
|
||||
if (confidenceType.equals(TransactionConfidence.ConfidenceType.BUILDING)) {
|
||||
trade.setState(Trade.State.PAYOUT_BROAD_CASTED);
|
||||
complete();
|
||||
} else {
|
||||
processModel.getTradeWalletService().broadcastTx(payoutTx, new FutureCallback<Transaction>() {
|
||||
@Override
|
||||
public void onSuccess(Transaction transaction) {
|
||||
log.debug("BroadcastTx succeeded. Transaction:" + transaction);
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* This file is part of Bitsquare.
|
||||
*
|
||||
* Bitsquare is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Bitsquare is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Bitsquare. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade.protocol.trade.tasks.shared;
|
||||
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class CommitPayoutTx extends TradeTask {
|
||||
private static final Logger log = LoggerFactory.getLogger(CommitPayoutTx.class);
|
||||
|
||||
public CommitPayoutTx(TaskRunner taskHandler, Trade trade) {
|
||||
super(taskHandler, trade);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void run() {
|
||||
try {
|
||||
runInterceptHook();
|
||||
Transaction transaction = processModel.getTradeWalletService().addTransactionToWallet(trade.getPayoutTx());
|
||||
trade.setPayoutTx(transaction);
|
||||
trade.setState(Trade.State.PAYOUT_TX_COMMITTED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue