mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-13 10:45:51 +00:00
Add MultiplexingDiscovery.forServices() that builds a suitable set of peer discoveries for
(optional) a set of desired services.
This commit is contained in:
parent
1be65483b4
commit
72763f2711
@ -18,7 +18,12 @@
|
|||||||
package org.bitcoinj.net.discovery;
|
package org.bitcoinj.net.discovery;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.squareup.okhttp.OkHttpClient;
|
||||||
|
|
||||||
import org.bitcoinj.core.NetworkParameters;
|
import org.bitcoinj.core.NetworkParameters;
|
||||||
|
import org.bitcoinj.core.VersionMessage;
|
||||||
|
import org.bitcoinj.net.discovery.HttpDiscovery;
|
||||||
|
import org.bitcoinj.net.discovery.DnsDiscovery.DnsSeedDiscovery;
|
||||||
import org.bitcoinj.utils.*;
|
import org.bitcoinj.utils.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -43,6 +48,30 @@ public class MultiplexingDiscovery implements PeerDiscovery {
|
|||||||
protected final NetworkParameters netParams;
|
protected final NetworkParameters netParams;
|
||||||
private volatile ExecutorService vThreadPool;
|
private volatile ExecutorService vThreadPool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a suitable set of peer discoveries. Will query them in parallel before producing a merged response.
|
||||||
|
* If specific services are required, DNS is not used as the protocol can't handle it.
|
||||||
|
* @param params Network to use.
|
||||||
|
* @param services Required services as a bitmask, e.g. {@link VersionMessage#NODE_NETWORK}.
|
||||||
|
*/
|
||||||
|
public static MultiplexingDiscovery forServices(NetworkParameters params, long services) {
|
||||||
|
List<PeerDiscovery> discoveries = Lists.newArrayList();
|
||||||
|
HttpDiscovery.Details[] httpSeeds = params.getHttpSeeds();
|
||||||
|
if (httpSeeds != null) {
|
||||||
|
OkHttpClient httpClient = new OkHttpClient();
|
||||||
|
for (HttpDiscovery.Details httpSeed : httpSeeds)
|
||||||
|
discoveries.add(new HttpDiscovery(params, httpSeed, httpClient));
|
||||||
|
}
|
||||||
|
// Also use DNS seeds if there is no specific service requirement
|
||||||
|
if (services == 0) {
|
||||||
|
String[] dnsSeeds = params.getDnsSeeds();
|
||||||
|
if (dnsSeeds != null)
|
||||||
|
for (String dnsSeed : dnsSeeds)
|
||||||
|
discoveries.add(new DnsSeedDiscovery(params, dnsSeed));
|
||||||
|
}
|
||||||
|
return new MultiplexingDiscovery(params, discoveries);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will query the given seeds in parallel before producing a merged response.
|
* Will query the given seeds in parallel before producing a merged response.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user