/** See {@link Peer#addConnectedEventListener(PeerConnectedEventListener)} */ public void addConnectedEventListener(PeerConnectedEventListener listener) { addConnectedEventListener(Threading.USER_THREAD, listener); }
/** See {@link Peer#addConnectedEventListener(PeerConnectedEventListener)} */ public void addConnectedEventListener(PeerConnectedEventListener listener) { addConnectedEventListener(Threading.USER_THREAD, listener); }
/** See {@link Peer#addConnectedEventListener(PeerConnectedEventListener)} */ public void addConnectedEventListener(PeerConnectedEventListener listener) { addConnectedEventListener(Threading.USER_THREAD, listener); }
/** See {@link Peer#addConnectedEventListener(PeerConnectedEventListener)} */ public void addConnectedEventListener(PeerConnectedEventListener listener) { addConnectedEventListener(Threading.USER_THREAD, listener); }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param protocolVersion The protocol version the awaited peers must implement (or better). * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersOfVersion(final int numPeers, final long protocolVersion) { List<Peer> foundPeers = findPeersOfAtLeastVersion(protocolVersion); if (foundPeers.size() >= numPeers) { return Futures.immediateFuture(foundPeers); } final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersOfAtLeastVersion(protocolVersion); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param protocolVersion The protocol version the awaited peers must implement (or better). * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersOfVersion(final int numPeers, final long protocolVersion) { List<Peer> foundPeers = findPeersOfAtLeastVersion(protocolVersion); if (foundPeers.size() >= numPeers) { return Futures.immediateFuture(foundPeers); } final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersOfAtLeastVersion(protocolVersion); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param protocolVersion The protocol version the awaited peers must implement (or better). * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersOfVersion(final int numPeers, final long protocolVersion) { List<Peer> foundPeers = findPeersOfAtLeastVersion(protocolVersion); if (foundPeers.size() >= numPeers) { return Futures.immediateFuture(foundPeers); } final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersOfAtLeastVersion(protocolVersion); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param mask An integer representing a bit mask that will be ANDed with the peers advertised service masks. * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersWithServiceMask(final int numPeers, final int mask) { lock.lock(); try { List<Peer> foundPeers = findPeersWithServiceMask(mask); if (foundPeers.size() >= numPeers) return Futures.immediateFuture(foundPeers); final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersWithServiceMask(mask); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; } finally { lock.unlock(); } }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param mask An integer representing a bit mask that will be ANDed with the peers advertised service masks. * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersWithServiceMask(final int numPeers, final int mask) { lock.lock(); try { List<Peer> foundPeers = findPeersWithServiceMask(mask); if (foundPeers.size() >= numPeers) return Futures.immediateFuture(foundPeers); final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersWithServiceMask(mask); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; } finally { lock.unlock(); } }
/** * Returns a future that is triggered when there are at least the requested number of connected peers that support * the given protocol version or higher. To block immediately, just call get() on the result. * * @param numPeers How many peers to wait for. * @param protocolVersion The protocol version the awaited peers must implement (or better). * @return a future that will be triggered when the number of connected peers implementing protocolVersion or higher >= numPeers */ public ListenableFuture<List<Peer>> waitForPeersOfVersion(final int numPeers, final long protocolVersion) { List<Peer> foundPeers = findPeersOfAtLeastVersion(protocolVersion); if (foundPeers.size() >= numPeers) { return Futures.immediateFuture(foundPeers); } final SettableFuture<List<Peer>> future = SettableFuture.create(); addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(Peer peer, int peerCount) { final List<Peer> peers = findPeersOfAtLeastVersion(protocolVersion); if (peers.size() >= numPeers) { future.set(peers); removeConnectedEventListener(this); } } }); return future; }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener) { addBlocksDownloadedEventListener(executor, listener); addChainDownloadStartedEventListener(executor, listener); addConnectedEventListener(executor, listener); addDisconnectedEventListener(executor, listener); addDiscoveredEventListener(executor, listener); addGetDataEventListener(executor, listener); addOnTransactionBroadcastListener(executor, listener); addPreMessageReceivedEventListener(executor, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener) { addBlocksDownloadedEventListener(executor, listener); addChainDownloadStartedEventListener(executor, listener); addConnectedEventListener(executor, listener); addDisconnectedEventListener(executor, listener); addDiscoveredEventListener(executor, listener); addGetDataEventListener(executor, listener); addOnTransactionBroadcastListener(executor, listener); addPreMessageReceivedEventListener(executor, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener, Executor executor) { addBlocksDownloadedEventListener(Threading.USER_THREAD, listener); addChainDownloadStartedEventListener(Threading.USER_THREAD, listener); addConnectedEventListener(Threading.USER_THREAD, listener); addDisconnectedEventListener(Threading.USER_THREAD, listener); addDiscoveredEventListener(Threading.USER_THREAD, listener); addGetDataEventListener(Threading.USER_THREAD, listener); addOnTransactionBroadcastListener(Threading.USER_THREAD, listener); addPreMessageReceivedEventListener(Threading.USER_THREAD, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener, Executor executor) { addBlocksDownloadedEventListener(Threading.USER_THREAD, listener); addChainDownloadStartedEventListener(Threading.USER_THREAD, listener); addConnectedEventListener(Threading.USER_THREAD, listener); addDisconnectedEventListener(Threading.USER_THREAD, listener); addDiscoveredEventListener(Threading.USER_THREAD, listener); addGetDataEventListener(Threading.USER_THREAD, listener); addOnTransactionBroadcastListener(Threading.USER_THREAD, listener); addPreMessageReceivedEventListener(Threading.USER_THREAD, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener, Executor executor) { addBlocksDownloadedEventListener(Threading.USER_THREAD, listener); addChainDownloadStartedEventListener(Threading.USER_THREAD, listener); addConnectedEventListener(Threading.USER_THREAD, listener); addDisconnectedEventListener(Threading.USER_THREAD, listener); addDiscoveredEventListener(Threading.USER_THREAD, listener); addGetDataEventListener(Threading.USER_THREAD, listener); addOnTransactionBroadcastListener(Threading.USER_THREAD, listener); addPreMessageReceivedEventListener(Threading.USER_THREAD, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener, Executor executor) { addBlocksDownloadedEventListener(Threading.USER_THREAD, listener); addChainDownloadStartedEventListener(Threading.USER_THREAD, listener); addConnectedEventListener(Threading.USER_THREAD, listener); addDisconnectedEventListener(Threading.USER_THREAD, listener); addDiscoveredEventListener(Threading.USER_THREAD, listener); addGetDataEventListener(Threading.USER_THREAD, listener); addOnTransactionBroadcastListener(Threading.USER_THREAD, listener); addPreMessageReceivedEventListener(Threading.USER_THREAD, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener) { addBlocksDownloadedEventListener(executor, listener); addChainDownloadStartedEventListener(executor, listener); addConnectedEventListener(executor, listener); addDisconnectedEventListener(executor, listener); addDiscoveredEventListener(executor, listener); addGetDataEventListener(executor, listener); addOnTransactionBroadcastListener(executor, listener); addPreMessageReceivedEventListener(executor, listener); }
/** Use the more specific listener methods instead */ @Deprecated @SuppressWarnings("deprecation") public void addEventListener(AbstractPeerEventListener listener) { addBlocksDownloadedEventListener(executor, listener); addChainDownloadStartedEventListener(executor, listener); addConnectedEventListener(executor, listener); addDisconnectedEventListener(executor, listener); addDiscoveredEventListener(executor, listener); addGetDataEventListener(executor, listener); addOnTransactionBroadcastListener(executor, listener); addPreMessageReceivedEventListener(executor, listener); }
private void setupNetwork() { params = MainNetParams.get(); peerGroup = new PeerGroup(params, null /* no chain */); peerGroup.setUserAgent("PeerMonitor", "1.0"); peerGroup.setMaxConnections(4); peerGroup.addPeerDiscovery(new DnsDiscovery(params)); peerGroup.addConnectedEventListener(new PeerConnectedEventListener() { @Override public void onPeerConnected(final Peer peer, int peerCount) { refreshUI(); lookupReverseDNS(peer); } }); peerGroup.addDisconnectedEventListener(new PeerDisconnectedEventListener() { @Override public void onPeerDisconnected(final Peer peer, int peerCount) { refreshUI(); synchronized (reverseDnsLookups) { reverseDnsLookups.remove(peer); } } }); }
@Test public void listener() throws Exception { peerGroup.addConnectedEventListener(connectedListener); peerGroup.addDisconnectedEventListener(disconnectedListener); peerGroup.addPreMessageReceivedEventListener(preMessageReceivedListener); peerGroup.start(); // Create a couple of peers. InboundMessageQueuer p1 = connectPeer(1); InboundMessageQueuer p2 = connectPeer(2); connectedPeers.take(); connectedPeers.take(); pingAndWait(p1); pingAndWait(p2); Threading.waitForUserCode(); assertEquals(0, disconnectedPeers.size()); p1.close(); disconnectedPeers.take(); assertEquals(0, disconnectedPeers.size()); p2.close(); disconnectedPeers.take(); assertEquals(0, disconnectedPeers.size()); assertTrue(peerGroup.removeConnectedEventListener(connectedListener)); assertFalse(peerGroup.removeConnectedEventListener(connectedListener)); assertTrue(peerGroup.removeDisconnectedEventListener(disconnectedListener)); assertFalse(peerGroup.removeDisconnectedEventListener(disconnectedListener)); assertTrue(peerGroup.removePreMessageReceivedEventListener(preMessageReceivedListener)); assertFalse(peerGroup.removePreMessageReceivedEventListener(preMessageReceivedListener)); }