forked from Qortal/qortal
Merge pull request #70 from catbref/synchronizer-newchaintipevent
Modify TradeBot to trigger when chain tip changes instead of with every new block
This commit is contained in:
commit
3cc394f02d
@ -20,6 +20,7 @@ import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
|
|||||||
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
|
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
|
||||||
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
||||||
import org.qortal.controller.Controller;
|
import org.qortal.controller.Controller;
|
||||||
|
import org.qortal.controller.Synchronizer;
|
||||||
import org.qortal.crypto.Crypto;
|
import org.qortal.crypto.Crypto;
|
||||||
import org.qortal.data.transaction.PresenceTransactionData;
|
import org.qortal.data.transaction.PresenceTransactionData;
|
||||||
import org.qortal.data.transaction.TransactionData;
|
import org.qortal.data.transaction.TransactionData;
|
||||||
@ -99,13 +100,13 @@ public class PresenceWebSocket extends ApiWebSocket implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void listen(Event event) {
|
public void listen(Event event) {
|
||||||
// We use NewBlockEvent as a proxy for 1-minute timer
|
// We use Synchronizer.NewChainTipEvent as a proxy for 1-minute timer
|
||||||
if (!(event instanceof Controller.NewTransactionEvent) && !(event instanceof Controller.NewBlockEvent))
|
if (!(event instanceof Controller.NewTransactionEvent) && !(event instanceof Synchronizer.NewChainTipEvent))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
removeOldEntries();
|
removeOldEntries();
|
||||||
|
|
||||||
if (event instanceof Controller.NewBlockEvent)
|
if (event instanceof Synchronizer.NewChainTipEvent)
|
||||||
// We only wanted a chance to cull old entries
|
// We only wanted a chance to cull old entries
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import org.eclipse.jetty.websocket.api.annotations.WebSocket;
|
|||||||
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
||||||
import org.qortal.api.model.CrossChainOfferSummary;
|
import org.qortal.api.model.CrossChainOfferSummary;
|
||||||
import org.qortal.controller.Controller;
|
import org.qortal.controller.Controller;
|
||||||
|
import org.qortal.controller.Synchronizer;
|
||||||
import org.qortal.crosschain.SupportedBlockchain;
|
import org.qortal.crosschain.SupportedBlockchain;
|
||||||
import org.qortal.crosschain.ACCT;
|
import org.qortal.crosschain.ACCT;
|
||||||
import org.qortal.crosschain.AcctMode;
|
import org.qortal.crosschain.AcctMode;
|
||||||
@ -80,10 +81,10 @@ public class TradeOffersWebSocket extends ApiWebSocket implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void listen(Event event) {
|
public void listen(Event event) {
|
||||||
if (!(event instanceof Controller.NewBlockEvent))
|
if (!(event instanceof Synchronizer.NewChainTipEvent))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BlockData blockData = ((Controller.NewBlockEvent) event).getBlockData();
|
BlockData blockData = ((Synchronizer.NewChainTipEvent) event).getNewChainTip();
|
||||||
|
|
||||||
// Process any new info
|
// Process any new info
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ import org.qortal.data.block.CommonBlockData;
|
|||||||
import org.qortal.data.network.PeerChainTipData;
|
import org.qortal.data.network.PeerChainTipData;
|
||||||
import org.qortal.data.transaction.RewardShareTransactionData;
|
import org.qortal.data.transaction.RewardShareTransactionData;
|
||||||
import org.qortal.data.transaction.TransactionData;
|
import org.qortal.data.transaction.TransactionData;
|
||||||
|
import org.qortal.event.Event;
|
||||||
|
import org.qortal.event.EventBus;
|
||||||
import org.qortal.network.Network;
|
import org.qortal.network.Network;
|
||||||
import org.qortal.network.Peer;
|
import org.qortal.network.Peer;
|
||||||
import org.qortal.network.message.BlockMessage;
|
import org.qortal.network.message.BlockMessage;
|
||||||
@ -96,6 +98,24 @@ public class Synchronizer extends Thread {
|
|||||||
OK, NOTHING_TO_DO, GENESIS_ONLY, NO_COMMON_BLOCK, TOO_DIVERGENT, NO_REPLY, INFERIOR_CHAIN, INVALID_DATA, NO_BLOCKCHAIN_LOCK, REPOSITORY_ISSUE, SHUTTING_DOWN;
|
OK, NOTHING_TO_DO, GENESIS_ONLY, NO_COMMON_BLOCK, TOO_DIVERGENT, NO_REPLY, INFERIOR_CHAIN, INVALID_DATA, NO_BLOCKCHAIN_LOCK, REPOSITORY_ISSUE, SHUTTING_DOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class NewChainTipEvent implements Event {
|
||||||
|
private final BlockData priorChainTip;
|
||||||
|
private final BlockData newChainTip;
|
||||||
|
|
||||||
|
public NewChainTipEvent(BlockData priorChainTip, BlockData newChainTip) {
|
||||||
|
this.priorChainTip = priorChainTip;
|
||||||
|
this.newChainTip = newChainTip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockData getPriorChainTip() {
|
||||||
|
return this.priorChainTip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockData getNewChainTip() {
|
||||||
|
return this.newChainTip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
private Synchronizer() {
|
private Synchronizer() {
|
||||||
@ -338,6 +358,8 @@ public class Synchronizer extends Thread {
|
|||||||
|
|
||||||
Network network = Network.getInstance();
|
Network network = Network.getInstance();
|
||||||
network.broadcast(broadcastPeer -> network.buildHeightMessage(broadcastPeer, newChainTip));
|
network.broadcast(broadcastPeer -> network.buildHeightMessage(broadcastPeer, newChainTip));
|
||||||
|
|
||||||
|
EventBus.INSTANCE.notify(new NewChainTipEvent(priorChainTip, newChainTip));
|
||||||
}
|
}
|
||||||
|
|
||||||
return syncResult;
|
return syncResult;
|
||||||
|
@ -16,6 +16,7 @@ import org.bitcoinj.core.ECKey;
|
|||||||
import org.qortal.account.PrivateKeyAccount;
|
import org.qortal.account.PrivateKeyAccount;
|
||||||
import org.qortal.api.model.crosschain.TradeBotCreateRequest;
|
import org.qortal.api.model.crosschain.TradeBotCreateRequest;
|
||||||
import org.qortal.controller.Controller;
|
import org.qortal.controller.Controller;
|
||||||
|
import org.qortal.controller.Synchronizer;
|
||||||
import org.qortal.controller.tradebot.AcctTradeBot.ResponseResult;
|
import org.qortal.controller.tradebot.AcctTradeBot.ResponseResult;
|
||||||
import org.qortal.crosschain.*;
|
import org.qortal.crosschain.*;
|
||||||
import org.qortal.data.at.ATData;
|
import org.qortal.data.at.ATData;
|
||||||
@ -213,7 +214,7 @@ public class TradeBot implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void listen(Event event) {
|
public void listen(Event event) {
|
||||||
if (!(event instanceof Controller.NewBlockEvent))
|
if (!(event instanceof Synchronizer.NewChainTipEvent))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
|
Loading…
Reference in New Issue
Block a user