Change peerinfo to a class rather than a dictionary

This commit is contained in:
Stuckinaboot 2018-10-29 14:09:47 +01:00
parent e93ced5f6a
commit 95d3847d5a
3 changed files with 8 additions and 4 deletions

View File

@ -1,3 +1,5 @@
# PeerStore
The PeerStore contains a mapping of peer IDs to PeerData objects. Each PeerData object represents a peer, and each PeerData contains a collection of protocols, addresses, and a mapping of metadata. PeerStore implements the IPeerStore (peer protocols), IAddrBook (address book), and IPeerMetadata (peer metadata) interfaces, which allows the peer store to effectively function as a dictionary for peer ID to protocol, address, and metadata.
Note: PeerInfo represents a read-only summary of a PeerData object. Only the attributes assigned in PeerInfo are readable by references to PeerInfo objects.

4
peer/peerinfo.py Normal file
View File

@ -0,0 +1,4 @@
class PeerInfo:
def __init__(self, peer_id, peer_data):
self.peer_id = peer_id
self.addrs = peer_data.get_addrs()

View File

@ -1,5 +1,6 @@
from .peerstore_interface import IPeerStore
from .peerdata import PeerData
from .peerinfo import PeerInfo
class PeerStore(IPeerStore):
@ -24,10 +25,7 @@ class PeerStore(IPeerStore):
def peer_info(self, peer_id):
if peer_id in self.peer_map:
peer = self.peer_map[peer_id]
return {
"peer_id": peer_id,
"addrs": peer.get_addrs()
}
return PeerInfo(peer_id, peer)
return None
def get_protocols(self, peer_id):