mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Use PersistenceManager
This commit is contained in:
parent
f6be9b0f6b
commit
2582f58e0a
2 changed files with 39 additions and 32 deletions
|
@ -17,7 +17,6 @@
|
|||
|
||||
package bisq.core.trade.closed;
|
||||
|
||||
import bisq.core.btc.wallet.BtcWalletService;
|
||||
import bisq.core.offer.Offer;
|
||||
import bisq.core.provider.price.PriceFeedService;
|
||||
import bisq.core.trade.DumpDelayedPayoutTx;
|
||||
|
@ -26,8 +25,8 @@ import bisq.core.trade.TradableList;
|
|||
import bisq.core.trade.Trade;
|
||||
|
||||
import bisq.common.crypto.KeyRing;
|
||||
import bisq.common.persistence.PersistenceManager;
|
||||
import bisq.common.proto.persistable.PersistedDataHost;
|
||||
import bisq.common.storage.Storage;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
|
@ -41,48 +40,49 @@ import java.util.stream.Collectors;
|
|||
import java.util.stream.Stream;
|
||||
|
||||
public class ClosedTradableManager implements PersistedDataHost {
|
||||
private final Storage<TradableList<Tradable>> tradableListStorage;
|
||||
private TradableList<Tradable> closedTradables;
|
||||
private final PersistenceManager<TradableList<Tradable>> persistenceManager;
|
||||
private final TradableList<Tradable> closedTradables = new TradableList<>();
|
||||
private final KeyRing keyRing;
|
||||
private final PriceFeedService priceFeedService;
|
||||
private final BtcWalletService btcWalletService;
|
||||
private final DumpDelayedPayoutTx dumpDelayedPayoutTx;
|
||||
|
||||
@Inject
|
||||
public ClosedTradableManager(KeyRing keyRing,
|
||||
PriceFeedService priceFeedService,
|
||||
BtcWalletService btcWalletService,
|
||||
Storage<TradableList<Tradable>> storage,
|
||||
PersistenceManager<TradableList<Tradable>> persistenceManager,
|
||||
DumpDelayedPayoutTx dumpDelayedPayoutTx) {
|
||||
this.keyRing = keyRing;
|
||||
this.priceFeedService = priceFeedService;
|
||||
this.btcWalletService = btcWalletService;
|
||||
tradableListStorage = storage;
|
||||
this.dumpDelayedPayoutTx = dumpDelayedPayoutTx;
|
||||
// The ClosedTrades object can become a few MB so we don't keep so many backups
|
||||
tradableListStorage.setNumMaxBackupFiles(3);
|
||||
|
||||
this.persistenceManager = persistenceManager;
|
||||
this.persistenceManager.initialize(closedTradables, "ClosedTrades");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readPersisted() {
|
||||
closedTradables = new TradableList<>(tradableListStorage, "ClosedTrades");
|
||||
TradableList<Tradable> persisted = persistenceManager.getPersisted("ClosedTrades");
|
||||
if (persisted != null) {
|
||||
closedTradables.setAll(persisted.getList());
|
||||
}
|
||||
|
||||
closedTradables.forEach(tradable -> {
|
||||
tradable.getOffer().setPriceFeedService(priceFeedService);
|
||||
if (tradable instanceof Trade) {
|
||||
Trade trade = (Trade) tradable;
|
||||
trade.setTransientFields(tradableListStorage, btcWalletService);
|
||||
}
|
||||
});
|
||||
|
||||
dumpDelayedPayoutTx.maybeDumpDelayedPayoutTxs(closedTradables, "delayed_payout_txs_closed");
|
||||
}
|
||||
|
||||
public void add(Tradable tradable) {
|
||||
closedTradables.add(tradable);
|
||||
if (closedTradables.add(tradable)) {
|
||||
persistenceManager.requestPersistence();
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(Tradable tradable) {
|
||||
closedTradables.remove(tradable);
|
||||
if (closedTradables.remove(tradable)) {
|
||||
persistenceManager.requestPersistence();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean wasMyOffer(Offer offer) {
|
||||
|
@ -90,7 +90,7 @@ public class ClosedTradableManager implements PersistedDataHost {
|
|||
}
|
||||
|
||||
public ObservableList<Tradable> getClosedTradables() {
|
||||
return closedTradables.getList();
|
||||
return closedTradables.getObservableList();
|
||||
}
|
||||
|
||||
public List<Trade> getClosedTrades() {
|
||||
|
|
|
@ -27,8 +27,8 @@ import bisq.core.trade.Trade;
|
|||
import bisq.core.trade.TradeUtils;
|
||||
|
||||
import bisq.common.crypto.KeyRing;
|
||||
import bisq.common.persistence.PersistenceManager;
|
||||
import bisq.common.proto.persistable.PersistedDataHost;
|
||||
import bisq.common.storage.Storage;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
|
@ -45,11 +45,11 @@ import lombok.Setter;
|
|||
|
||||
public class FailedTradesManager implements PersistedDataHost {
|
||||
private static final Logger log = LoggerFactory.getLogger(FailedTradesManager.class);
|
||||
private TradableList<Trade> failedTrades;
|
||||
private final TradableList<Trade> failedTrades = new TradableList<>();
|
||||
private final KeyRing keyRing;
|
||||
private final PriceFeedService priceFeedService;
|
||||
private final BtcWalletService btcWalletService;
|
||||
private final Storage<TradableList<Trade>> tradableListStorage;
|
||||
private final PersistenceManager<TradableList<Trade>> persistenceManager;
|
||||
private final DumpDelayedPayoutTx dumpDelayedPayoutTx;
|
||||
@Setter
|
||||
private Function<Trade, Boolean> unFailTradeCallback;
|
||||
|
@ -58,37 +58,42 @@ public class FailedTradesManager implements PersistedDataHost {
|
|||
public FailedTradesManager(KeyRing keyRing,
|
||||
PriceFeedService priceFeedService,
|
||||
BtcWalletService btcWalletService,
|
||||
Storage<TradableList<Trade>> storage,
|
||||
PersistenceManager<TradableList<Trade>> persistenceManager,
|
||||
DumpDelayedPayoutTx dumpDelayedPayoutTx) {
|
||||
this.keyRing = keyRing;
|
||||
this.priceFeedService = priceFeedService;
|
||||
this.btcWalletService = btcWalletService;
|
||||
tradableListStorage = storage;
|
||||
this.dumpDelayedPayoutTx = dumpDelayedPayoutTx;
|
||||
this.persistenceManager = persistenceManager;
|
||||
this.persistenceManager.initialize(failedTrades, "FailedTrades");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readPersisted() {
|
||||
this.failedTrades = new TradableList<>(tradableListStorage, "FailedTrades");
|
||||
TradableList<Trade> persisted = persistenceManager.getPersisted("FailedTrades");
|
||||
if (persisted != null) {
|
||||
failedTrades.setAll(persisted.getList());
|
||||
}
|
||||
|
||||
failedTrades.forEach(trade -> {
|
||||
if (trade.getOffer() != null) {
|
||||
trade.getOffer().setPriceFeedService(priceFeedService);
|
||||
}
|
||||
|
||||
trade.setTransientFields(tradableListStorage, btcWalletService);
|
||||
});
|
||||
|
||||
dumpDelayedPayoutTx.maybeDumpDelayedPayoutTxs(failedTrades, "delayed_payout_txs_failed");
|
||||
}
|
||||
|
||||
public void add(Trade trade) {
|
||||
if (!failedTrades.contains(trade)) {
|
||||
failedTrades.add(trade);
|
||||
if (failedTrades.add(trade)) {
|
||||
persistenceManager.requestPersistence();
|
||||
}
|
||||
}
|
||||
|
||||
public void removeTrade(Trade trade) {
|
||||
failedTrades.remove(trade);
|
||||
if (failedTrades.remove(trade)) {
|
||||
persistenceManager.requestPersistence();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean wasMyOffer(Offer offer) {
|
||||
|
@ -96,7 +101,7 @@ public class FailedTradesManager implements PersistedDataHost {
|
|||
}
|
||||
|
||||
public ObservableList<Trade> getFailedTrades() {
|
||||
return failedTrades.getList();
|
||||
return failedTrades.getObservableList();
|
||||
}
|
||||
|
||||
public Optional<Trade> getTradeById(String id) {
|
||||
|
@ -114,7 +119,9 @@ public class FailedTradesManager implements PersistedDataHost {
|
|||
|
||||
if (unFailTradeCallback.apply(trade)) {
|
||||
log.info("Unfailing trade {}", trade.getId());
|
||||
failedTrades.remove(trade);
|
||||
if (failedTrades.remove(trade)) {
|
||||
persistenceManager.requestPersistence();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue