当前位置: 首页>>代码示例>>Java>>正文


Java PeerDiscovery类代码示例

本文整理汇总了Java中com.google.bitcoin.net.discovery.PeerDiscovery的典型用法代码示例。如果您正苦于以下问题:Java PeerDiscovery类的具体用法?Java PeerDiscovery怎么用?Java PeerDiscovery使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


PeerDiscovery类属于com.google.bitcoin.net.discovery包,在下文中一共展示了PeerDiscovery类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: peerDiscoveryPolling

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
@Test
public void peerDiscoveryPolling() throws InterruptedException {
    // Check that if peer discovery fails, we keep trying until we have some nodes to talk with.
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicBoolean result = new AtomicBoolean();
    peerGroup.addPeerDiscovery(new PeerDiscovery() {
        public InetSocketAddress[] getPeers(long unused, TimeUnit unused2) throws PeerDiscoveryException {
            if (!result.getAndSet(true)) {
                // Pretend we are not connected to the internet.
                throw new PeerDiscoveryException("test failure");
            } else {
                // Return a bogus address.
                latch.countDown();
                return new InetSocketAddress[]{new InetSocketAddress("localhost", 1)};
            }
        }
        public void shutdown() {
        }
    });
    peerGroup.startAndWait();
    latch.await();
    // Check that we did indeed throw an exception. If we got here it means we threw and then PeerGroup tried
    // again a bit later.
    assertTrue(result.get());
}
 
开发者ID:HashEngineering,项目名称:megacoinj,代码行数:26,代码来源:PeerGroupTest.java

示例2: peerDiscoveryPolling

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
@Test
public void peerDiscoveryPolling() throws InterruptedException {
    // Check that if peer discovery fails, we keep trying until we have some nodes to talk with.
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicBoolean result = new AtomicBoolean();
    peerGroup.addPeerDiscovery(new PeerDiscovery() {
        public InetSocketAddress[] getPeers(long unused, TimeUnit unused2) throws PeerDiscoveryException {
            if (!result.getAndSet(true)) {
                // Pretend we are not connected to the internet.
                throw new PeerDiscoveryException("test failure");
            } else {
                // Return a bogus address.
                latch.countDown();
                return new InetSocketAddress[]{new InetSocketAddress("localhost", 1)};
            }
        }
        public void shutdown() {
        }
    });
    peerGroup.startAsync();
    peerGroup.awaitRunning();
    latch.await();
    // Check that we did indeed throw an exception. If we got here it means we threw and then PeerGroup tried
    // again a bit later.
    assertTrue(result.get());
}
 
开发者ID:HashEngineering,项目名称:quarkcoinj,代码行数:27,代码来源:PeerGroupTest.java

示例3: PeerGroup

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
/**
 * Creates a new PeerGroup allowing you to specify the {@link ClientConnectionManager} which is used to create new
 * connections and keep track of existing ones.
 */
public PeerGroup(NetworkParameters params, @Nullable AbstractBlockChain chain, ClientConnectionManager connectionManager) {
    this.params = checkNotNull(params);
    this.chain = chain;
    this.fastCatchupTimeSecs = params.getGenesisBlock().getTimeSeconds();
    this.wallets = new CopyOnWriteArrayList<Wallet>();
    this.peerFilterProviders = new CopyOnWriteArrayList<PeerFilterProvider>();

    // This default sentinel value will be overridden by one of two actions:
    //   - adding a peer discovery source sets it to the default
    //   - using connectTo() will increment it by one
    this.maxConnections = 0;

    int height = chain == null ? 0 : chain.getBestChainHeight();
    // We never request that the remote node wait for a bloom filter yet, as we have no wallets
    this.versionMessage = new VersionMessage(params, height, true);

    memoryPool = new MemoryPool();

    inactives = new PriorityQueue<PeerAddress>(1, new Comparator<PeerAddress>() {
        @Override
        public int compare(PeerAddress a, PeerAddress b) {
            int result = backoffMap.get(a).compareTo(backoffMap.get(b));
            // Sort by port if otherwise equals - for testing
            if (result == 0)
                result = Ints.compare(a.getPort(), b.getPort());
            return result;
        }
    });
    backoffMap = new HashMap<PeerAddress, ExponentialBackoff>();
    peers = new CopyOnWriteArrayList<Peer>();
    pendingPeers = new CopyOnWriteArrayList<Peer>();
    channels = connectionManager;
    peerDiscoverers = new CopyOnWriteArraySet<PeerDiscovery>();
    peerEventListeners = new CopyOnWriteArrayList<ListenerRegistration<PeerEventListener>>();
    runningBroadcasts = Collections.synchronizedSet(new HashSet<TransactionBroadcast>());
}
 
开发者ID:HashEngineering,项目名称:megacoinj,代码行数:41,代码来源:PeerGroup.java

示例4: addPeerDiscovery

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
/**
 * Add addresses from a discovery source to the list of potential peers to connect to. If max connections has not
 * been configured, or set to zero, then it's set to the default at this point.
 */
public void addPeerDiscovery(PeerDiscovery peerDiscovery) {
    lock.lock();
    try {
        if (getMaxConnections() == 0)
            setMaxConnections(DEFAULT_CONNECTIONS);
        peerDiscoverers.add(peerDiscovery);
    } finally {
        lock.unlock();
    }
}
 
开发者ID:HashEngineering,项目名称:megacoinj,代码行数:15,代码来源:PeerGroup.java

示例5: shutDown

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
@Override
protected void shutDown() throws Exception {
    // This is run on a separate thread by the Service implementation.
    vPingTimer.cancel();
    // Blocking close of all sockets.
    channels.stopAndWait();
    for (PeerDiscovery peerDiscovery : peerDiscoverers) {
        peerDiscovery.shutdown();
    }
}
 
开发者ID:HashEngineering,项目名称:megacoinj,代码行数:11,代码来源:PeerGroup.java

示例6: PeerGroup

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
/**
 * Creates a new PeerGroup allowing you to specify the {@link ClientConnectionManager} which is used to create new
 * connections and keep track of existing ones.
 */
public PeerGroup(NetworkParameters params, @Nullable AbstractBlockChain chain, ClientConnectionManager connectionManager) {
    this.params = checkNotNull(params);
    this.chain = chain;
    this.fastCatchupTimeSecs = params.getGenesisBlock().getTimeSeconds();
    this.wallets = new CopyOnWriteArrayList<Wallet>();
    this.peerFilterProviders = new CopyOnWriteArrayList<PeerFilterProvider>();

    // This default sentinel value will be overridden by one of two actions:
    //   - adding a peer discovery source sets it to the default
    //   - using connectTo() will increment it by one
    this.maxConnections = 0;

    int height = chain == null ? 0 : chain.getBestChainHeight();
    // We never request that the remote node wait for a bloom filter yet, as we have no wallets
    this.versionMessage = new VersionMessage(params, height, true);

    memoryPool = new MemoryPool();

    inactives = new PriorityQueue<PeerAddress>(1, new Comparator<PeerAddress>() {
        @Override
        public int compare(PeerAddress a, PeerAddress b) {
            int result = backoffMap.get(a).compareTo(backoffMap.get(b));
            // Sort by port if otherwise equals - for testing
            if (result == 0)
                result = Integer.valueOf(a.getPort()).compareTo(b.getPort());
            return result;
        }
    });
    backoffMap = new HashMap<PeerAddress, ExponentialBackoff>();
    peers = new CopyOnWriteArrayList<Peer>();
    pendingPeers = new CopyOnWriteArrayList<Peer>();
    channels = connectionManager;
    peerDiscoverers = new CopyOnWriteArraySet<PeerDiscovery>();
    peerEventListeners = new CopyOnWriteArrayList<ListenerRegistration<PeerEventListener>>();
    runningBroadcasts = Collections.synchronizedSet(new HashSet<TransactionBroadcast>());
}
 
开发者ID:10xEngineer,项目名称:My-Wallet-Android,代码行数:41,代码来源:PeerGroup.java

示例7: PeerGroup

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
/**
 * Creates a new PeerGroup allowing you to specify the {@link ClientConnectionManager} which is used to create new
 * connections and keep track of existing ones.
 */
private PeerGroup(NetworkParameters params, @Nullable AbstractBlockChain chain, ClientConnectionManager connectionManager, @Nullable TorClient torClient) {
    this.params = checkNotNull(params);
    this.chain = chain;
    this.fastCatchupTimeSecs = params.getGenesisBlock().getTimeSeconds();
    this.wallets = new CopyOnWriteArrayList<Wallet>();
    this.peerFilterProviders = new CopyOnWriteArrayList<PeerFilterProvider>();
    this.torClient = torClient;

    // This default sentinel value will be overridden by one of two actions:
    //   - adding a peer discovery source sets it to the default
    //   - using connectTo() will increment it by one
    this.maxConnections = 0;

    int height = chain == null ? 0 : chain.getBestChainHeight();
    // We never request that the remote node wait for a bloom filter yet, as we have no wallets
    this.versionMessage = new VersionMessage(params, height, true);
    this.downloadTxDependencies = true;

    memoryPool = new MemoryPool();

    inactives = new PriorityQueue<PeerAddress>(1, new Comparator<PeerAddress>() {
        @Override
        public int compare(PeerAddress a, PeerAddress b) {
            int result = backoffMap.get(a).compareTo(backoffMap.get(b));
            // Sort by port if otherwise equals - for testing
            if (result == 0)
                result = Ints.compare(a.getPort(), b.getPort());
            return result;
        }
    });
    backoffMap = new HashMap<PeerAddress, ExponentialBackoff>();
    peers = new CopyOnWriteArrayList<Peer>();
    pendingPeers = new CopyOnWriteArrayList<Peer>();
    channels = connectionManager;
    peerDiscoverers = new CopyOnWriteArraySet<PeerDiscovery>();
    peerEventListeners = new CopyOnWriteArrayList<ListenerRegistration<PeerEventListener>>();
    runningBroadcasts = Collections.synchronizedSet(new HashSet<TransactionBroadcast>());
}
 
开发者ID:HashEngineering,项目名称:quarkcoinj,代码行数:43,代码来源:PeerGroup.java

示例8: shutDown

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
@Override
protected void shutDown() throws Exception {
    // This is run on a separate thread by the Service implementation.
    vPingTimer.cancel();
    // Blocking close of all sockets.
    channels.stopAsync();
    channels.awaitTerminated();
    for (PeerDiscovery peerDiscovery : peerDiscoverers) {
        peerDiscovery.shutdown();
    }
    if (torClient != null) {
        torClient.stop();
    }
}
 
开发者ID:HashEngineering,项目名称:quarkcoinj,代码行数:15,代码来源:PeerGroup.java

示例9: PeerGroup

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
/**
 * Creates a new PeerGroup allowing you to specify the {@link ClientConnectionManager} which is used to create new
 * connections and keep track of existing ones.
 */
public PeerGroup(NetworkParameters params, @Nullable AbstractBlockChain chain, ClientConnectionManager connectionManager) {
    this.params = checkNotNull(params);
    this.chain = chain;
    this.fastCatchupTimeSecs = params.getGenesisBlock().getTimeSeconds();
    this.wallets = new CopyOnWriteArrayList<Wallet>();
    this.peerFilterProviders = new CopyOnWriteArrayList<PeerFilterProvider>();

    // This default sentinel value will be overridden by one of two actions:
    //   - adding a peer discovery source sets it to the default
    //   - using connectTo() will increment it by one
    this.maxConnections = 0;

    int height = chain == null ? 0 : chain.getBestChainHeight();
    // We never request that the remote node wait for a bloom filter yet, as we have no wallets
    this.versionMessage = new VersionMessage(params, height, true);

    memoryPool = new MemoryPool();

    inactives = new PriorityQueue<PeerAddress>(1, new Comparator<PeerAddress>() {
        @Override
        public int compare(PeerAddress a, PeerAddress b) {
            int result = backoffMap.get(a).compareTo(backoffMap.get(b));
            // Sort by port if otherwise equals - for testing
            if (result == 0)
                result = Integer.valueOf(a.getPort()).compareTo(b.getPort());
            return result;
        }
    });
    backoffMap = new HashMap<PeerAddress, ExponentialBackoff>();
    peers = new CopyOnWriteArrayList<Peer>();
    pendingPeers = new CopyOnWriteArrayList<Peer>();
    channels = connectionManager;
    peerDiscoverers = new CopyOnWriteArraySet<PeerDiscovery>();
    peerEventListeners = new CopyOnWriteArrayList<ListenerRegistration<PeerEventListener>>();
}
 
开发者ID:9cat,项目名称:templecoin-java,代码行数:40,代码来源:PeerGroup.java

示例10: peerPriority

import com.google.bitcoin.net.discovery.PeerDiscovery; //导入依赖的package包/类
@Test
public void peerPriority() throws Exception {
    final List<InetSocketAddress> addresses = Lists.newArrayList(
            new InetSocketAddress("localhost", 2000),
            new InetSocketAddress("localhost", 2001),
            new InetSocketAddress("localhost", 2002)
    );
    peerGroup.addEventListener(listener);
    peerGroup.addPeerDiscovery(new PeerDiscovery() {
        public InetSocketAddress[] getPeers(long unused, TimeUnit unused2) throws PeerDiscoveryException {
            return addresses.toArray(new InetSocketAddress[addresses.size()]);
        }

        public void shutdown() {
        }
    });
    peerGroup.setMaxConnections(3);
    Utils.setMockSleep(true);
    peerGroup.startAndWait();

    handleConnectToPeer(0);
    handleConnectToPeer(1);
    handleConnectToPeer(2);
    connectedPeers.take();
    connectedPeers.take();
    connectedPeers.take();
    addresses.clear();
    addresses.addAll(Lists.newArrayList(new InetSocketAddress("localhost", 2003)));
    stopPeerServer(2);
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort()); // peer died

    // discovers, connects to new peer
    handleConnectToPeer(3);
    assertEquals(2003, connectedPeers.take().getAddress().getPort());

    stopPeerServer(1);
    assertEquals(2001, disconnectedPeers.take().getAddress().getPort()); // peer died

    // Alternates trying two offline peers
    Utils.passMockSleep();
    assertEquals(2001, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2001, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2001, disconnectedPeers.take().getAddress().getPort());

    // Peer 2 comes online
    startPeerServer(2);
    Utils.passMockSleep();
    handleConnectToPeer(2);
    assertEquals(2002, connectedPeers.take().getAddress().getPort());

    stopPeerServer(2);
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort()); // peer died

    // Peer 2 is tried twice before peer 1, since it has a lower backoff due to recent success
    Utils.passMockSleep();
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2002, disconnectedPeers.take().getAddress().getPort());
    Utils.passMockSleep();
    assertEquals(2001, disconnectedPeers.take().getAddress().getPort());
}
 
开发者ID:HashEngineering,项目名称:megacoinj,代码行数:68,代码来源:PeerGroupTest.java


注:本文中的com.google.bitcoin.net.discovery.PeerDiscovery类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。