mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-03-11 17:58:01 +01:00
Refactor adding/removing block download listeners
This commit is contained in:
parent
3d3dd6f721
commit
509df8c232
1 changed files with 28 additions and 16 deletions
|
@ -1481,16 +1481,10 @@ public class PeerGroup implements TransactionBroadcaster {
|
|||
try {
|
||||
if (downloadPeer != null) {
|
||||
if (this.downloadListener != null) {
|
||||
downloadPeer.removeBlocksDownloadedEventListener(this.downloadListener);
|
||||
downloadPeer.removeChainDownloadStartedEventListener(this.downloadListener);
|
||||
downloadPeer.removeGetDataEventListener(this.downloadListener);
|
||||
downloadPeer.removePreMessageReceivedEventListener(this.downloadListener);
|
||||
removeDataEventListenerFromPeer(downloadPeer, this.downloadListener);
|
||||
}
|
||||
if (listener != null) {
|
||||
downloadPeer.addBlocksDownloadedEventListener(listener);
|
||||
downloadPeer.addChainDownloadStartedEventListener(listener);
|
||||
downloadPeer.addGetDataEventListener(listener);
|
||||
downloadPeer.addPreMessageReceivedEventListener(listener);
|
||||
addDataEventListenerToPeer(Threading.USER_THREAD, downloadPeer, listener);
|
||||
}
|
||||
}
|
||||
this.downloadListener = listener;
|
||||
|
@ -1505,6 +1499,30 @@ public class PeerGroup implements TransactionBroadcaster {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a data event listener against a single peer (i.e. for blockchain
|
||||
* download). Handling registration/deregistration on peer death/add is
|
||||
* outside the scope of these methods.
|
||||
*/
|
||||
private static void addDataEventListenerToPeer(Executor executor, Peer peer, PeerDataEventListener downloadListener) {
|
||||
peer.addBlocksDownloadedEventListener(executor, downloadListener);
|
||||
peer.addChainDownloadStartedEventListener(executor, downloadListener);
|
||||
peer.addGetDataEventListener(executor, downloadListener);
|
||||
peer.addPreMessageReceivedEventListener(executor, downloadListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a registered data event listener against a single peer (i.e. for
|
||||
* blockchain download). Handling registration/deregistration on peer death/add is
|
||||
* outside the scope of these methods.
|
||||
*/
|
||||
private static void removeDataEventListenerFromPeer(Peer peer, PeerDataEventListener listener) {
|
||||
peer.removeBlocksDownloadedEventListener(listener);
|
||||
peer.removeChainDownloadStartedEventListener(listener);
|
||||
peer.removeGetDataEventListener(listener);
|
||||
peer.removePreMessageReceivedEventListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Download the blockchain from peers. Convenience that uses a {@link DownloadProgressTracker} for you.<p>
|
||||
*
|
||||
|
@ -1620,10 +1638,7 @@ public class PeerGroup implements TransactionBroadcaster {
|
|||
if (downloadPeer != null) {
|
||||
log.info("Unsetting download peer: {}", downloadPeer);
|
||||
if (downloadListener != null) {
|
||||
downloadPeer.removeBlocksDownloadedEventListener(downloadListener);
|
||||
downloadPeer.removeChainDownloadStartedEventListener(downloadListener);
|
||||
downloadPeer.removeGetDataEventListener(downloadListener);
|
||||
downloadPeer.removePreMessageReceivedEventListener(downloadListener);
|
||||
removeDataEventListenerFromPeer(downloadPeer, downloadListener);
|
||||
}
|
||||
downloadPeer.setDownloadData(false);
|
||||
}
|
||||
|
@ -1631,10 +1646,7 @@ public class PeerGroup implements TransactionBroadcaster {
|
|||
if (downloadPeer != null) {
|
||||
log.info("Setting download peer: {}", downloadPeer);
|
||||
if (downloadListener != null) {
|
||||
peer.addBlocksDownloadedEventListener(Threading.SAME_THREAD, downloadListener);
|
||||
peer.addChainDownloadStartedEventListener(Threading.SAME_THREAD, downloadListener);
|
||||
peer.addGetDataEventListener(Threading.SAME_THREAD, downloadListener);
|
||||
peer.addPreMessageReceivedEventListener(Threading.SAME_THREAD, downloadListener);
|
||||
addDataEventListenerToPeer(Threading.SAME_THREAD, peer, downloadListener);
|
||||
}
|
||||
downloadPeer.setDownloadData(true);
|
||||
if (chain != null)
|
||||
|
|
Loading…
Add table
Reference in a new issue