diff --git a/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java b/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java index 26d131c4..c579ac86 100644 --- a/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java @@ -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.servlet.WebSocketServletFactory; import org.qortal.controller.Controller; +import org.qortal.controller.Synchronizer; import org.qortal.crypto.Crypto; import org.qortal.data.transaction.PresenceTransactionData; import org.qortal.data.transaction.TransactionData; @@ -99,13 +100,13 @@ public class PresenceWebSocket extends ApiWebSocket implements Listener { @Override public void listen(Event event) { - // We use NewBlockEvent as a proxy for 1-minute timer - if (!(event instanceof Controller.NewTransactionEvent) && !(event instanceof Controller.NewBlockEvent)) + // We use Synchronizer.NewChainTipEvent as a proxy for 1-minute timer + if (!(event instanceof Controller.NewTransactionEvent) && !(event instanceof Synchronizer.NewChainTipEvent)) return; removeOldEntries(); - if (event instanceof Controller.NewBlockEvent) + if (event instanceof Synchronizer.NewChainTipEvent) // We only wanted a chance to cull old entries return; diff --git a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java index 186f79e3..35fc4691 100644 --- a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java @@ -23,6 +23,7 @@ import org.eclipse.jetty.websocket.api.annotations.WebSocket; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.api.model.CrossChainOfferSummary; import org.qortal.controller.Controller; +import org.qortal.controller.Synchronizer; import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.AcctMode; @@ -80,10 +81,10 @@ public class TradeOffersWebSocket extends ApiWebSocket implements Listener { @Override public void listen(Event event) { - if (!(event instanceof Controller.NewBlockEvent)) + if (!(event instanceof Synchronizer.NewChainTipEvent)) return; - BlockData blockData = ((Controller.NewBlockEvent) event).getBlockData(); + BlockData blockData = ((Synchronizer.NewChainTipEvent) event).getNewChainTip(); // Process any new info diff --git a/src/main/java/org/qortal/controller/Synchronizer.java b/src/main/java/org/qortal/controller/Synchronizer.java index b98c5fa2..bb36d42d 100644 --- a/src/main/java/org/qortal/controller/Synchronizer.java +++ b/src/main/java/org/qortal/controller/Synchronizer.java @@ -22,6 +22,8 @@ import org.qortal.data.block.CommonBlockData; import org.qortal.data.network.PeerChainTipData; import org.qortal.data.transaction.RewardShareTransactionData; 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.Peer; 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; } + 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 private Synchronizer() { @@ -338,6 +358,8 @@ public class Synchronizer extends Thread { Network network = Network.getInstance(); network.broadcast(broadcastPeer -> network.buildHeightMessage(broadcastPeer, newChainTip)); + + EventBus.INSTANCE.notify(new NewChainTipEvent(priorChainTip, newChainTip)); } return syncResult; diff --git a/src/main/java/org/qortal/controller/tradebot/TradeBot.java b/src/main/java/org/qortal/controller/tradebot/TradeBot.java index 2f9c3121..6996acbb 100644 --- a/src/main/java/org/qortal/controller/tradebot/TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/TradeBot.java @@ -16,6 +16,7 @@ import org.bitcoinj.core.ECKey; import org.qortal.account.PrivateKeyAccount; import org.qortal.api.model.crosschain.TradeBotCreateRequest; import org.qortal.controller.Controller; +import org.qortal.controller.Synchronizer; import org.qortal.controller.tradebot.AcctTradeBot.ResponseResult; import org.qortal.crosschain.*; import org.qortal.data.at.ATData; @@ -213,7 +214,7 @@ public class TradeBot implements Listener { @Override public void listen(Event event) { - if (!(event instanceof Controller.NewBlockEvent)) + if (!(event instanceof Synchronizer.NewChainTipEvent)) return; synchronized (this) {