From 95d3847d5ad98d396c0c7eb146c28759da631a79 Mon Sep 17 00:00:00 2001 From: Stuckinaboot Date: Mon, 29 Oct 2018 14:09:47 +0100 Subject: [PATCH] Change peerinfo to a class rather than a dictionary --- peer/README.md | 2 ++ peer/peerinfo.py | 4 ++++ peer/peerstore.py | 6 ++---- 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 peer/peerinfo.py diff --git a/peer/README.md b/peer/README.md index 8a4ba3f..df710f8 100644 --- a/peer/README.md +++ b/peer/README.md @@ -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. \ No newline at end of file diff --git a/peer/peerinfo.py b/peer/peerinfo.py new file mode 100644 index 0000000..b5cbd48 --- /dev/null +++ b/peer/peerinfo.py @@ -0,0 +1,4 @@ +class PeerInfo: + def __init__(self, peer_id, peer_data): + self.peer_id = peer_id + self.addrs = peer_data.get_addrs() diff --git a/peer/peerstore.py b/peer/peerstore.py index 58f195d..2ddcf11 100644 --- a/peer/peerstore.py +++ b/peer/peerstore.py @@ -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):