Add receiver ID handling

This commit is contained in:
Stuckinaboot 2019-04-09 21:37:25 -04:00
parent ebda40e034
commit db8eae74e5
2 changed files with 14 additions and 6 deletions

View File

@ -6,6 +6,7 @@ from libp2p.peer.peerinfo import info_from_p2p_addr
from libp2p.pubsub.pubsub import Pubsub
from libp2p.pubsub.floodsub import FloodSub
from tests.pubsub.utils import message_id_generator
from libp2p.peer.id import ID
TOPIC = "eth"
SUPPORTED_PUBSUB_PROTOCOLS = ["/floodsub/1.0.0"]
@ -21,7 +22,7 @@ class ReceiverNode():
self.next_msg_id_func = message_id_generator(0)
@classmethod
async def create(cls, ack_protocol, topic):
async def create(cls, node_id, transport_opt_str, ack_protocol, topic):
"""
Create a new ReceiverNode and attach a libp2p node, a floodsub, and a pubsub
instance to this new node
@ -31,8 +32,10 @@ class ReceiverNode():
"""
self = ReceiverNode()
libp2p_node = await new_node(transport_opt=["/ip4/127.0.0.1/tcp/0"])
await libp2p_node.get_network().listen(multiaddr.Multiaddr("/ip4/127.0.0.1/tcp/0"))
id_opt = ID("peer-" + node_id)
libp2p_node = await new_node(id_opt=id_opt, transport_opt=[transport_opt_str])
await libp2p_node.get_network().listen(multiaddr.Multiaddr(transport_opt_str))
self.libp2p_node = libp2p_node

View File

@ -2,6 +2,7 @@ import asyncio
import json
import multiaddr
import sys
from libp2p.peer.id import ID
from sender import SenderNode
from receiver import ReceiverNode
from libp2p.peer.peerinfo import info_from_p2p_addr
@ -16,7 +17,6 @@ python receiver_driver.py topology_config.json "my_node_id"
async def connect(node1, node2_addr):
# node1 connects to node2
print(node2_addr)
info = info_from_p2p_addr(node2_addr)
await node1.connect(info)
@ -79,16 +79,21 @@ async def main():
# Create Receiver Node
print("Creating receiver")
receiver_node = await ReceiverNode.create(ACK_PROTOCOL, my_topic)
my_transport_opt_str = topology_config_dict["node_id_map"][my_node_id]
receiver_node = await ReceiverNode.create(my_node_id, my_transport_opt_str, ACK_PROTOCOL, my_topic)
print("Receiver created")
# TODO: sleep for like 15 seconds to let other nodes start up
# Connect receiver node to all other relevant receiver nodes
for neighbor in topology_config_dict["topology"][my_node_id]:
neighbor_addr_str = topology_config_dict["node_id_map"][neighbor]
# Add p2p part
neighbor_addr_str += "/p2p/" + ID("peer-" + neighbor).pretty()
# Convert neighbor_addr_str to multiaddr
neighbor_addr = multiaddr.Multiaddr(neighbor_addr_str)
await connect(receiver_node, neighbor_addr)
await connect(receiver_node.libp2p_node, neighbor_addr)
# Get sender info as multiaddr
sender_addr_str = topology_config_dict["node_id_map"]["sender"]