diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HashDistance.java b/router/java/src/net/i2p/router/networkdb/kademlia/HashDistance.java new file mode 100644 index 0000000000000000000000000000000000000000..eb6ed1c743d1825eb5699f19d260e12f0394dbb0 --- /dev/null +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HashDistance.java @@ -0,0 +1,27 @@ +package net.i2p.router.networkdb.kademlia; +/* + * free (adj.): unencumbered; not under the control of others + * Written by jrandom in 2003 and released into the public domain + * with no warranty of any kind, either expressed or implied. + * It probably won't make your computer catch on fire, or eat + * your children, but it might. Use at your own risk. + * + */ + +import java.math.BigInteger; + +import net.i2p.data.DataHelper; +import net.i2p.data.Hash; + +/** + * Moved from PeerSelector + * @since 0.7.14 + */ +public class HashDistance { + + public static BigInteger getDistance(Hash targetKey, Hash routerInQuestion) { + // plain XOR of the key and router + byte diff[] = DataHelper.xor(routerInQuestion.getData(), targetKey.getData()); + return new BigInteger(1, diff); + } +} diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java index b2343aedb58920270c850c6da17d45da47df32d2..bb22ab0e448fe00a2c69fcb0e529130646d53f82 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -19,7 +19,7 @@ import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.TunnelPoolSettings; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; -import net.i2p.router.networkdb.kademlia.PeerSelector; +import net.i2p.router.networkdb.kademlia.HashDistance; import net.i2p.util.Log; /** @@ -505,8 +505,8 @@ public abstract class TunnelPeerSelector { Hash lh = SHA256Generator.getInstance().calculateHash(data); System.arraycopy(((Hash) r).getData(), 0, data, 0, Hash.HASH_LENGTH); Hash rh = SHA256Generator.getInstance().calculateHash(data); - BigInteger ll = PeerSelector.getDistance(_hash, lh); - BigInteger rr = PeerSelector.getDistance(_hash, rh); + BigInteger ll = HashDistance.getDistance(_hash, lh); + BigInteger rr = HashDistance.getDistance(_hash, rh); return ll.compareTo(rr); } }