Files
py-libp2p/libp2p/discovery/events/peerDiscovery.py
2025-06-24 14:25:39 +05:30

38 lines
927 B
Python

from collections.abc import (
Awaitable,
Callable,
)
import trio
from libp2p.abc import (
PeerInfo,
)
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], None]] = []
def register_peer_discovered_handler(
self, handler: Callable[[PeerInfo], Awaitable[None]]
) -> None:
self._peer_discovered_handlers.append(handler)
def emit_peer_discovered(self, peer_info: PeerInfo) -> None:
for handler in self._peer_discovered_handlers:
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)
# peerDiscovery.register_peer_discovered_handler(peerDiscoveryHandler)