mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-04-20 07:46:05 -04:00
reset offer protocol after first result
This commit is contained in:
parent
31782e5255
commit
9a5d2d5862
@ -937,9 +937,9 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
||||
log.info("Adding open offer {}", openOffer.getId());
|
||||
synchronized (openOffers.getList()) {
|
||||
openOffers.add(openOffer);
|
||||
}
|
||||
if (openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null) {
|
||||
xmrConnectionService.getKeyImagePoller().addKeyImages(openOffer.getOffer().getOfferPayload().getReserveTxKeyImages(), OPEN_OFFER_GROUP_KEY_IMAGE_ID);
|
||||
if (openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null) {
|
||||
xmrConnectionService.getKeyImagePoller().addKeyImages(openOffer.getOffer().getOfferPayload().getReserveTxKeyImages(), OPEN_OFFER_GROUP_KEY_IMAGE_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -947,14 +947,20 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
||||
log.info("Removing open offer {}", openOffer.getId());
|
||||
synchronized (openOffers.getList()) {
|
||||
openOffers.remove(openOffer);
|
||||
if (openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null) {
|
||||
xmrConnectionService.getKeyImagePoller().removeKeyImages(openOffer.getOffer().getOfferPayload().getReserveTxKeyImages(), OPEN_OFFER_GROUP_KEY_IMAGE_ID);
|
||||
}
|
||||
}
|
||||
synchronized (placeOfferProtocols) {
|
||||
PlaceOfferProtocol protocol = placeOfferProtocols.remove(openOffer.getId());
|
||||
if (protocol != null) protocol.cancelOffer();
|
||||
}
|
||||
if (openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null) {
|
||||
xmrConnectionService.getKeyImagePoller().removeKeyImages(openOffer.getOffer().getOfferPayload().getReserveTxKeyImages(), OPEN_OFFER_GROUP_KEY_IMAGE_ID);
|
||||
}
|
||||
|
||||
// cancel place offer protocol
|
||||
ThreadUtils.execute(() -> {
|
||||
synchronized (processOffersLock) {
|
||||
synchronized (placeOfferProtocols) {
|
||||
PlaceOfferProtocol protocol = placeOfferProtocols.remove(openOffer.getId());
|
||||
if (protocol != null) protocol.cancelOffer();
|
||||
}
|
||||
}
|
||||
}, THREAD_ID);
|
||||
}
|
||||
|
||||
private void cancelOpenOffersOnSpent(String keyImage) {
|
||||
@ -1455,7 +1461,8 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
||||
|
||||
private void signAndPostOffer(OpenOffer openOffer,
|
||||
boolean useSavingsWallet, // TODO: remove this?
|
||||
TransactionResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
|
||||
TransactionResultHandler resultHandler,
|
||||
ErrorMessageHandler errorMessageHandler) {
|
||||
log.info("Signing and posting offer " + openOffer.getId());
|
||||
|
||||
// create model
|
||||
|
@ -31,6 +31,8 @@ import haveno.core.offer.placeoffer.tasks.ValidateOffer;
|
||||
import haveno.core.trade.handlers.TransactionResultHandler;
|
||||
import haveno.core.trade.protocol.TradeProtocol;
|
||||
import haveno.network.p2p.NodeAddress;
|
||||
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -39,8 +41,8 @@ public class PlaceOfferProtocol {
|
||||
|
||||
private final PlaceOfferModel model;
|
||||
private Timer timeoutTimer;
|
||||
private final TransactionResultHandler resultHandler;
|
||||
private final ErrorMessageHandler errorMessageHandler;
|
||||
private TransactionResultHandler resultHandler;
|
||||
private ErrorMessageHandler errorMessageHandler;
|
||||
private TaskRunner<PlaceOfferModel> taskRunner;
|
||||
|
||||
|
||||
@ -118,7 +120,7 @@ public class PlaceOfferProtocol {
|
||||
() -> {
|
||||
log.debug("sequence at handleSignOfferResponse completed");
|
||||
stopTimeoutTimer();
|
||||
resultHandler.handleResult(model.getTransaction()); // TODO (woodser): XMR transaction instead
|
||||
handleResult(model.getTransaction()); // TODO: use XMR transaction instead
|
||||
},
|
||||
(errorMessage) -> {
|
||||
if (model.isOfferAddedToOfferBook()) {
|
||||
@ -140,21 +142,27 @@ public class PlaceOfferProtocol {
|
||||
taskRunner.run();
|
||||
}
|
||||
|
||||
public void startTimeoutTimer() {
|
||||
public synchronized void startTimeoutTimer() {
|
||||
if (resultHandler == null) return;
|
||||
stopTimeoutTimer();
|
||||
timeoutTimer = UserThread.runAfter(() -> {
|
||||
handleError(Res.get("createOffer.timeoutAtPublishing"));
|
||||
}, TradeProtocol.TRADE_STEP_TIMEOUT_SECONDS);
|
||||
}
|
||||
|
||||
private void stopTimeoutTimer() {
|
||||
private synchronized void stopTimeoutTimer() {
|
||||
if (timeoutTimer != null) {
|
||||
timeoutTimer.stop();
|
||||
timeoutTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void handleError(String errorMessage) {
|
||||
private synchronized void handleResult(Transaction transaction) {
|
||||
resultHandler.handleResult(transaction);
|
||||
resetHandlers();
|
||||
}
|
||||
|
||||
private synchronized void handleError(String errorMessage) {
|
||||
if (timeoutTimer != null) {
|
||||
taskRunner.cancel();
|
||||
if (!model.getOpenOffer().isCanceled()) {
|
||||
@ -163,5 +171,11 @@ public class PlaceOfferProtocol {
|
||||
stopTimeoutTimer();
|
||||
errorMessageHandler.handleErrorMessage(errorMessage);
|
||||
}
|
||||
resetHandlers();
|
||||
}
|
||||
|
||||
private synchronized void resetHandlers() {
|
||||
resultHandler = null;
|
||||
errorMessageHandler = null;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user