X-Git-Url: https://git.mxchange.org/?p=quix0rs-apt-p2p.git;a=blobdiff_plain;f=apt_p2p_Khashmir%2Futil.py;h=966dc7246421ecd962e9e2273b95cdb0a8eb7e27;hp=39b4ce00ebd7e36c40f45baaf6bb1976bf3abafc;hb=394d446ab8d4bdb7f010a81e97b7ff7898a99e4a;hpb=d563aab35fc0fd1fab59e0f6d594fbb05735cf21 diff --git a/apt_p2p_Khashmir/util.py b/apt_p2p_Khashmir/util.py index 39b4ce0..966dc72 100644 --- a/apt_p2p_Khashmir/util.py +++ b/apt_p2p_Khashmir/util.py @@ -1,10 +1,10 @@ -## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved -# see LICENSE.txt for license information """Some utitlity functions for use in apt-p2p's khashmir DHT.""" from twisted.trial import unittest +from khash import HASH_LENGTH + def bucket_stats(l): """Given a list of khashmir instances, finds min, max, and average number of nodes in tables.""" max = avg = 0 @@ -35,11 +35,11 @@ def uncompact(s): @return: the node ID, IP address and port to contact the node on @raise ValueError: if the compact representation doesn't exist """ - if (len(s) != 26): + if (len(s) != HASH_LENGTH+6): raise ValueError - id = s[:20] - host = '.'.join([str(ord(i)) for i in s[20:24]]) - port = (ord(s[24]) << 8) | ord(s[25]) + id = s[:HASH_LENGTH] + host = '.'.join([str(ord(i)) for i in s[HASH_LENGTH:(HASH_LENGTH+4)]]) + port = (ord(s[HASH_LENGTH+4]) << 8) | ord(s[HASH_LENGTH+5]) return {'id': id, 'host': host, 'port': port} def compact(id, host, port): @@ -69,11 +69,15 @@ def byte_format(s): @param s: the number of bytes @rtype: C{string} @return: the formatted size with appropriate units - """ - - if (s < 1024): - r = str(s) + 'B' + if (s < 1): + r = str(int(s*1000.0)/1000.0) + 'B' + elif (s < 10): + r = str(int(s*100.0)/100.0) + 'B' + elif (s < 102): + r = str(int(s*10.0)/10.0) + 'B' + elif (s < 1024): + r = str(int(s)) + 'B' elif (s < 10485): r = str(int((s/1024.0)*100.0)/100.0) + 'KiB' elif (s < 104857):