public PeerStore buildPeerStore() { return new PeerStore(getDbSource("peers")); }
@Test public void shouldBeGotPeer() { peerStore = new PeerStore(new LevelDbDataSource(StoreTestUtils.getTestPath(), "peers")); Peer peer = Peer.valueOf("ynode://75bff16c@127.0.0.1:32918"); peerStore.put(peer.getPeerId(), peer); assertThat(peerStore.contains(peer.getPeerId())).isTrue(); Peer foundPeer = peerStore.get(peer.getPeerId()); assertThat(foundPeer).isEqualTo(peer); }
@Override public synchronized Peer addPeer(Peer p) { p.setDistance(owner); Peer lastSeen = buckets[getBucketId(p)].addPeer(p); if (lastSeen != null) { return lastSeen; } if (!peerStore.contains(p.getPeerId())) { peerStore.put(p.getPeerId(), p); log.debug("Added peerStore size={}, peer={}", count(), p.toAddress()); } return null; }
@Override public synchronized int count() { return peerStore.size(); }
/** * call back from PeerHandlerGroup * @param peer disconnected peer */ @Override public void peerDisconnected(Peer peer) { buckets[getBucketId(peer)].dropPeer(peer); peerStore.remove(peer.getPeerId()); } }
@Override public List<Peer> getBootstrappingSeedList() { List<Peer> seedPeerList; if (peerStore.size() > 1) { seedPeerList = getClosestPeers(KademliaOptions.BUCKET_SIZE); } else if (this.seedPeerList != null) { seedPeerList = this.seedPeerList.stream().map(Peer::valueOf) .collect(Collectors.toList()); } else { seedPeerList = new ArrayList<>(); } return seedPeerList; }