mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
38 lines
927 B
Python
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)
|