Apply PR feedback:
use defaultdict for peer data map
This commit is contained in:
parent
94c7a0bca4
commit
9f3f2c53da
|
@ -1,3 +1,4 @@
|
||||||
|
from collections import defaultdict
|
||||||
from typing import Any, Dict, List, Sequence
|
from typing import Any, Dict, List, Sequence
|
||||||
|
|
||||||
from multiaddr import Multiaddr
|
from multiaddr import Multiaddr
|
||||||
|
@ -15,22 +16,7 @@ class PeerStore(IPeerStore):
|
||||||
peer_data_map: Dict[ID, PeerData]
|
peer_data_map: Dict[ID, PeerData]
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.peer_data_map = {}
|
self.peer_data_map = defaultdict(PeerData)
|
||||||
|
|
||||||
def __create_or_get_peer_data(self, peer_id: ID) -> PeerData:
|
|
||||||
"""
|
|
||||||
Returns the peer data for peer_id or creates a new peer data (and
|
|
||||||
stores it in peer_data_map) if peer data for peer_id does not yet
|
|
||||||
exist.
|
|
||||||
|
|
||||||
:param peer_id: peer ID
|
|
||||||
:return: peer data
|
|
||||||
"""
|
|
||||||
if peer_id in self.peer_data_map:
|
|
||||||
return self.peer_data_map[peer_id]
|
|
||||||
data = PeerData()
|
|
||||||
self.peer_data_map[peer_id] = data
|
|
||||||
return data
|
|
||||||
|
|
||||||
def peer_info(self, peer_id: ID) -> PeerInfo:
|
def peer_info(self, peer_id: ID) -> PeerInfo:
|
||||||
"""
|
"""
|
||||||
|
@ -57,7 +43,7 @@ class PeerStore(IPeerStore):
|
||||||
:param peer_id: peer ID to add protocols for
|
:param peer_id: peer ID to add protocols for
|
||||||
:param protocols: protocols to add
|
:param protocols: protocols to add
|
||||||
"""
|
"""
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
peer_data.add_protocols(list(protocols))
|
peer_data.add_protocols(list(protocols))
|
||||||
|
|
||||||
def set_protocols(self, peer_id: ID, protocols: Sequence[str]) -> None:
|
def set_protocols(self, peer_id: ID, protocols: Sequence[str]) -> None:
|
||||||
|
@ -65,7 +51,7 @@ class PeerStore(IPeerStore):
|
||||||
:param peer_id: peer ID to set protocols for
|
:param peer_id: peer ID to set protocols for
|
||||||
:param protocols: protocols to set
|
:param protocols: protocols to set
|
||||||
"""
|
"""
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
peer_data.set_protocols(list(protocols))
|
peer_data.set_protocols(list(protocols))
|
||||||
|
|
||||||
def peer_ids(self) -> List[ID]:
|
def peer_ids(self) -> List[ID]:
|
||||||
|
@ -95,7 +81,7 @@ class PeerStore(IPeerStore):
|
||||||
:param key:
|
:param key:
|
||||||
:param value:
|
:param value:
|
||||||
"""
|
"""
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
peer_data.put_metadata(key, val)
|
peer_data.put_metadata(key, val)
|
||||||
|
|
||||||
def add_addr(self, peer_id: ID, addr: Multiaddr, ttl: int) -> None:
|
def add_addr(self, peer_id: ID, addr: Multiaddr, ttl: int) -> None:
|
||||||
|
@ -113,7 +99,7 @@ class PeerStore(IPeerStore):
|
||||||
:param ttl: time-to-live for the this record
|
:param ttl: time-to-live for the this record
|
||||||
"""
|
"""
|
||||||
# Ignore ttl for now
|
# Ignore ttl for now
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
peer_data.add_addrs(list(addrs))
|
peer_data.add_addrs(list(addrs))
|
||||||
|
|
||||||
def addrs(self, peer_id: ID) -> List[Multiaddr]:
|
def addrs(self, peer_id: ID) -> List[Multiaddr]:
|
||||||
|
@ -152,7 +138,7 @@ class PeerStore(IPeerStore):
|
||||||
:param pubkey:
|
:param pubkey:
|
||||||
:raise PeerStoreError: if peer ID and pubkey does not match
|
:raise PeerStoreError: if peer ID and pubkey does not match
|
||||||
"""
|
"""
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
if ID.from_pubkey(pubkey) != peer_id:
|
if ID.from_pubkey(pubkey) != peer_id:
|
||||||
raise PeerStoreError("peer ID and pubkey does not match")
|
raise PeerStoreError("peer ID and pubkey does not match")
|
||||||
peer_data.add_pubkey(pubkey)
|
peer_data.add_pubkey(pubkey)
|
||||||
|
@ -178,7 +164,7 @@ class PeerStore(IPeerStore):
|
||||||
:param privkey:
|
:param privkey:
|
||||||
:raise PeerStoreError: if peer ID or peer privkey not found
|
:raise PeerStoreError: if peer ID or peer privkey not found
|
||||||
"""
|
"""
|
||||||
peer_data = self.__create_or_get_peer_data(peer_id)
|
peer_data = self.peer_data_map[peer_id]
|
||||||
if ID.from_pubkey(privkey.get_public_key()) != peer_id:
|
if ID.from_pubkey(privkey.get_public_key()) != peer_id:
|
||||||
raise PeerStoreError("peer ID and privkey does not match")
|
raise PeerStoreError("peer ID and privkey does not match")
|
||||||
peer_data.add_privkey(privkey)
|
peer_data.add_privkey(privkey)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user