mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-11 07:30:55 +00:00
feat: emitted event from demo file
This commit is contained in:
@ -9,6 +9,15 @@ from libp2p import (
|
|||||||
from libp2p.crypto.secp256k1 import (
|
from libp2p.crypto.secp256k1 import (
|
||||||
create_new_key_pair,
|
create_new_key_pair,
|
||||||
)
|
)
|
||||||
|
from libp2p.discovery.events.peerDiscovery import (
|
||||||
|
peerDiscovery
|
||||||
|
)
|
||||||
|
from libp2p.abc import (
|
||||||
|
PeerInfo
|
||||||
|
)
|
||||||
|
|
||||||
|
def customFunctoion(peerinfo: PeerInfo):
|
||||||
|
print("Printing peer info from demo file",repr(peerinfo))
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
@ -18,7 +27,7 @@ async def main():
|
|||||||
|
|
||||||
# Listen on a random TCP port
|
# Listen on a random TCP port
|
||||||
listen_addr = multiaddr.Multiaddr("/ip4/0.0.0.0/tcp/0")
|
listen_addr = multiaddr.Multiaddr("/ip4/0.0.0.0/tcp/0")
|
||||||
|
peerDiscovery.register_peer_discovered_handler(customFunctoion)
|
||||||
# Enable mDNS discovery
|
# Enable mDNS discovery
|
||||||
host = new_host(key_pair=key_pair, enable_mDNS=True)
|
host = new_host(key_pair=key_pair, enable_mDNS=True)
|
||||||
|
|
||||||
|
|||||||
@ -14,24 +14,24 @@ TTL: int = 60 * 60 # Time-to-live for discovered peers in seconds
|
|||||||
|
|
||||||
class PeerDiscovery:
|
class PeerDiscovery:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self._peer_discovered_handlers: list[Callable[[PeerInfo], Awaitable[None]]] = []
|
self._peer_discovered_handlers: list[Callable[[PeerInfo], None]] = []
|
||||||
|
|
||||||
def register_peer_discovered_handler(
|
def register_peer_discovered_handler(
|
||||||
self, handler: Callable[[PeerInfo], Awaitable[None]]
|
self, handler: Callable[[PeerInfo], Awaitable[None]]
|
||||||
) -> None:
|
) -> None:
|
||||||
self._peer_discovered_handlers.append(handler)
|
self._peer_discovered_handlers.append(handler)
|
||||||
|
|
||||||
async def emit_peer_discovered(self, peer_info: PeerInfo) -> None:
|
def emit_peer_discovered(self, peer_info: PeerInfo) -> None:
|
||||||
for handler in self._peer_discovered_handlers:
|
for handler in self._peer_discovered_handlers:
|
||||||
await handler(peer_info)
|
handler(peer_info)
|
||||||
|
|
||||||
|
|
||||||
peerDiscovery = PeerDiscovery()
|
peerDiscovery = PeerDiscovery()
|
||||||
|
|
||||||
|
|
||||||
async def peerDiscoveryHandler(peerInfo: PeerInfo) -> None:
|
# async def peerDiscoveryHandler(peerInfo: PeerInfo) -> None:
|
||||||
await trio.sleep(5) # Simulate some processing delay
|
# await trio.sleep(5) # Simulate some processing delay
|
||||||
# print("Discovered peer is", peerInfo.peer_id)
|
# # print("Discovered peer is", peerInfo.peer_id)
|
||||||
|
|
||||||
|
|
||||||
peerDiscovery.register_peer_discovered_handler(peerDiscoveryHandler)
|
# peerDiscovery.register_peer_discovered_handler(peerDiscoveryHandler)
|
||||||
|
|||||||
@ -7,9 +7,15 @@ from zeroconf import (
|
|||||||
Zeroconf,
|
Zeroconf,
|
||||||
)
|
)
|
||||||
|
|
||||||
from libp2p.abc import IPeerStore, Multiaddr
|
from libp2p.abc import (
|
||||||
|
IPeerStore,
|
||||||
|
Multiaddr
|
||||||
|
)
|
||||||
from libp2p.peer.id import ID
|
from libp2p.peer.id import ID
|
||||||
from libp2p.peer.peerinfo import PeerInfo
|
from libp2p.peer.peerinfo import PeerInfo
|
||||||
|
from libp2p.discovery.events.peerDiscovery import (
|
||||||
|
peerDiscovery
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PeerListener(ServiceListener):
|
class PeerListener(ServiceListener):
|
||||||
@ -39,6 +45,7 @@ class PeerListener(ServiceListener):
|
|||||||
if peer_info:
|
if peer_info:
|
||||||
self.discovered_services[name] = peer_info.peer_id
|
self.discovered_services[name] = peer_info.peer_id
|
||||||
self.peerstore.add_addrs(peer_info.peer_id, peer_info.addrs, 10)
|
self.peerstore.add_addrs(peer_info.peer_id, peer_info.addrs, 10)
|
||||||
|
peerDiscovery.emit_peer_discovered(peer_info)
|
||||||
print("Discovered Peer:", peer_info.peer_id)
|
print("Discovered Peer:", peer_info.peer_id)
|
||||||
|
|
||||||
def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None:
|
def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user