mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
Remove kademlia module (#377)
* Remove kademlia and routing/kademlia * cleanup * Fix routed_host test * lint mypy * fix doc * remove set_up_nodes_by_transport_and_disc_opt and fix typing
This commit is contained in:
@ -1,16 +1,16 @@
|
||||
from typing import List, Sequence, Tuple
|
||||
from typing import Dict, Sequence, Tuple, cast
|
||||
|
||||
import multiaddr
|
||||
|
||||
from libp2p import new_node
|
||||
from libp2p.host.basic_host import BasicHost
|
||||
from libp2p.host.host_interface import IHost
|
||||
from libp2p.kademlia.network import KademliaServer
|
||||
from libp2p.host.routed_host import RoutedHost
|
||||
from libp2p.network.stream.net_stream_interface import INetStream
|
||||
from libp2p.network.swarm import Swarm
|
||||
from libp2p.peer.peerinfo import info_from_p2p_addr
|
||||
from libp2p.peer.id import ID
|
||||
from libp2p.peer.peerinfo import PeerInfo, info_from_p2p_addr
|
||||
from libp2p.routing.interfaces import IPeerRouting
|
||||
from libp2p.routing.kademlia.kademlia_peer_router import KadmeliaPeerRouter
|
||||
from libp2p.typing import StreamHandlerFn, TProtocol
|
||||
|
||||
from .constants import MAX_READ_LEN
|
||||
@ -47,35 +47,6 @@ async def set_up_nodes_by_transport_opt(
|
||||
return tuple(nodes_list)
|
||||
|
||||
|
||||
async def set_up_nodes_by_transport_and_disc_opt(
|
||||
transport_disc_opt_list: Sequence[Tuple[Sequence[str], IPeerRouting]]
|
||||
) -> Tuple[BasicHost, ...]:
|
||||
nodes_list = []
|
||||
for transport_opt, disc_opt in transport_disc_opt_list:
|
||||
node = await new_node(transport_opt=transport_opt, disc_opt=disc_opt)
|
||||
await node.get_network().listen(multiaddr.Multiaddr(transport_opt[0]))
|
||||
nodes_list.append(node)
|
||||
return tuple(nodes_list)
|
||||
|
||||
|
||||
async def set_up_routers(
|
||||
router_confs: Tuple[int, int] = (0, 0)
|
||||
) -> List[KadmeliaPeerRouter]:
|
||||
"""The default ``router_confs`` selects two free ports local to this
|
||||
machine."""
|
||||
bootstrap_node = KademliaServer() # type: ignore
|
||||
await bootstrap_node.listen(router_confs[0])
|
||||
|
||||
routers = [KadmeliaPeerRouter(bootstrap_node)]
|
||||
for port in router_confs[1:]:
|
||||
node = KademliaServer() # type: ignore
|
||||
await node.listen(port)
|
||||
|
||||
await node.bootstrap_node(bootstrap_node.address)
|
||||
routers.append(KadmeliaPeerRouter(node))
|
||||
return routers
|
||||
|
||||
|
||||
async def echo_stream_handler(stream: INetStream) -> None:
|
||||
while True:
|
||||
read_string = (await stream.read(MAX_READ_LEN)).decode()
|
||||
@ -95,3 +66,33 @@ async def perform_two_host_set_up(
|
||||
# Associate the peer with local ip address (see default parameters of Libp2p())
|
||||
node_a.get_peerstore().add_addrs(node_b.get_id(), node_b.get_addrs(), 10)
|
||||
return node_a, node_b
|
||||
|
||||
|
||||
class DummyRouter(IPeerRouting):
|
||||
_routing_table: Dict[ID, PeerInfo]
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._routing_table = dict()
|
||||
|
||||
async def find_peer(self, peer_id: ID) -> PeerInfo:
|
||||
return self._routing_table.get(peer_id, None)
|
||||
|
||||
|
||||
async def set_up_routed_hosts() -> Tuple[RoutedHost, RoutedHost]:
|
||||
router_a, router_b = DummyRouter(), DummyRouter()
|
||||
transport = "/ip4/127.0.0.1/tcp/0"
|
||||
host_a = await new_node(transport_opt=[transport], disc_opt=router_a)
|
||||
host_b = await new_node(transport_opt=[transport], disc_opt=router_b)
|
||||
|
||||
address = multiaddr.Multiaddr(transport)
|
||||
await host_a.get_network().listen(address)
|
||||
await host_b.get_network().listen(address)
|
||||
|
||||
mock_routing_table = {
|
||||
host_a.get_id(): PeerInfo(host_a.get_id(), host_a.get_addrs()),
|
||||
host_b.get_id(): PeerInfo(host_b.get_id(), host_b.get_addrs()),
|
||||
}
|
||||
|
||||
router_a._routing_table = router_b._routing_table = mock_routing_table
|
||||
|
||||
return cast(RoutedHost, host_a), cast(RoutedHost, host_b)
|
||||
|
||||
Reference in New Issue
Block a user