public static List<Map<Number160, PeerStatistic>> unflatten( Collection<PeerAddress> map, PeerAddress sender) { PeerMapConfiguration peerMapConfiguration = new PeerMapConfiguration(sender.peerId()); PeerMap peerMap = new PeerMap(peerMapConfiguration); for (PeerAddress peerAddress : map) { LOG.debug("found peer in unflatten for relaying, {}", peerAddress); peerMap.peerFound(peerAddress, null, null, null); } return peerMap.peerMapVerified(); }
public static void routing(Number160 key, Peer[] peers, int start) { System.out.println("routing: searching for key " + key); NavigableSet<PeerAddress> pa1 = new TreeSet<PeerAddress>(PeerMap.createXORAddressComparator(key)); NavigableSet<PeerAddress> queried = new TreeSet<PeerAddress>(PeerMap.createXORAddressComparator(key)); Number160 result = Number160.ZERO; Number160 resultPeer = new Number160("0xd75d1a3d57841fbc9e2a3d175d6a35dc2e15b9f"); int round = 0; while (!resultPeer.equals(result)) { System.out.println("round " + round); round++; pa1.addAll(peers[start].peerBean().peerMap().all()); queried.add(peers[start].peerAddress()); System.out.println("closest so far: " + queried.first()); PeerAddress next = pa1.pollFirst(); while (queried.contains(next)) { next = pa1.pollFirst(); } result = next.peerId(); start = findNr(next.peerId().toString(), peers); } }
@Override public int compare(PeerAddress o1, PeerAddress o2) { return o1.peerId().toString().compareTo(o2.peerId().toString()); }