feat: emitted event from demo file

This commit is contained in:
sumanjeet0012@gmail.com
2025-06-20 16:25:28 +05:30
parent f43e7e367a
commit e2f95f4df3
3 changed files with 25 additions and 9 deletions

View File

@ -9,6 +9,15 @@ from libp2p import (
from libp2p.crypto.secp256k1 import (
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():
@ -18,7 +27,7 @@ async def main():
# Listen on a random TCP port
listen_addr = multiaddr.Multiaddr("/ip4/0.0.0.0/tcp/0")
peerDiscovery.register_peer_discovered_handler(customFunctoion)
# Enable mDNS discovery
host = new_host(key_pair=key_pair, enable_mDNS=True)

View File

@ -14,24 +14,24 @@ TTL: int = 60 * 60 # Time-to-live for discovered peers in seconds
class PeerDiscovery:
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(
self, handler: Callable[[PeerInfo], Awaitable[None]]
) -> None:
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:
await handler(peer_info)
handler(peer_info)
peerDiscovery = PeerDiscovery()
async def peerDiscoveryHandler(peerInfo: PeerInfo) -> None:
await trio.sleep(5) # Simulate some processing delay
# print("Discovered peer is", peerInfo.peer_id)
# async def peerDiscoveryHandler(peerInfo: PeerInfo) -> None:
# await trio.sleep(5) # Simulate some processing delay
# # print("Discovered peer is", peerInfo.peer_id)
peerDiscovery.register_peer_discovered_handler(peerDiscoveryHandler)
# peerDiscovery.register_peer_discovered_handler(peerDiscoveryHandler)

View File

@ -7,9 +7,15 @@ from zeroconf import (
Zeroconf,
)
from libp2p.abc import IPeerStore, Multiaddr
from libp2p.abc import (
IPeerStore,
Multiaddr
)
from libp2p.peer.id import ID
from libp2p.peer.peerinfo import PeerInfo
from libp2p.discovery.events.peerDiscovery import (
peerDiscovery
)
class PeerListener(ServiceListener):
@ -39,6 +45,7 @@ class PeerListener(ServiceListener):
if peer_info:
self.discovered_services[name] = peer_info.peer_id
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)
def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None: