refactor peerinfo
This commit is contained in:
parent
c03f2f63d2
commit
fb687dad09
|
@ -1,12 +1,19 @@
|
|||
import heapq
|
||||
import multihash
|
||||
from operator import itemgetter
|
||||
from libp2p.peer.peerinfo import PeerInfo
|
||||
|
||||
|
||||
class KadPeerInfo(PeerInfo):
|
||||
def __init__(self, peer_id, peer_data):
|
||||
def __init__(self, peer_id, peer_data=None):
|
||||
super(KadPeerInfo, self).__init__(peer_id, peer_data)
|
||||
self.long_id = int(peer_id.hex(), 16)
|
||||
print ("Kad Peer Info")
|
||||
print (peer_id)
|
||||
print (peer_data)
|
||||
sha1 = multihash.Func.sha1
|
||||
mh_digest = multihash.digest(peer_id.pretty().encode('utf-8'), sha1)
|
||||
self.peer_id = peer_id.pretty()
|
||||
self.long_id = int.from_bytes(mh_digest.encode(), byteorder='big')
|
||||
|
||||
def same_home_as(self, node):
|
||||
#TODO: handle more than one addr
|
||||
|
|
|
@ -2,8 +2,10 @@ import random
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from multiaddr import Multiaddr
|
||||
from rpcudp.protocol import RPCProtocol
|
||||
|
||||
from libp2p.peer.id import ID
|
||||
from libp2p.peer.peerdata import PeerData
|
||||
from .kad_peerinfo import KadPeerInfo
|
||||
from .routing import RoutingTable
|
||||
from .utils import digest
|
||||
|
@ -143,6 +145,10 @@ class KademliaProtocol(RPCProtocol):
|
|||
is closer than the closest in that list, then store the key/value
|
||||
on the new node (per section 2.5 of the paper)
|
||||
"""
|
||||
|
||||
print ("Welcome if new")
|
||||
print (node)
|
||||
|
||||
if not self.router.is_new_node(node):
|
||||
return
|
||||
|
||||
|
|
|
@ -151,7 +151,11 @@ class RoutingTable:
|
|||
self.buckets[index].remove_node(node)
|
||||
|
||||
def is_new_node(self, node):
|
||||
print ("IN IS NEW NODE")
|
||||
print (node)
|
||||
print (self.buckets)
|
||||
index = self.get_bucket_for(node)
|
||||
print (index)
|
||||
return self.buckets[index].is_new_node(node)
|
||||
|
||||
def add_contact(self, node):
|
||||
|
@ -174,7 +178,15 @@ class RoutingTable:
|
|||
"""
|
||||
Get the index of the bucket that the given node would fall into.
|
||||
"""
|
||||
print ("IN GET BUKCKET FOR")
|
||||
print (node)
|
||||
print (node.long_id)
|
||||
print (self.buckets)
|
||||
for index, bucket in enumerate(self.buckets):
|
||||
print ("IN ENUMERATE")
|
||||
print (index)
|
||||
print (bucket)
|
||||
print (bucket.range)
|
||||
if node.long_id < bucket.range[1]:
|
||||
return index
|
||||
# we should never be here, but make linter happy
|
||||
|
|
|
@ -7,9 +7,9 @@ from .peerdata import PeerData
|
|||
|
||||
class PeerInfo:
|
||||
# pylint: disable=too-few-public-methods
|
||||
def __init__(self, peer_id, peer_data):
|
||||
def __init__(self, peer_id, peer_data=None):
|
||||
self.peer_id = peer_id
|
||||
self.addrs = peer_data.get_addrs()
|
||||
self.addrs = peer_data.get_addrs() if peer_data else None
|
||||
|
||||
|
||||
def info_from_p2p_addr(addr):
|
||||
|
|
Loading…
Reference in New Issue
Block a user