diff --git a/examples/discovery/mDNS/mDNS.py b/examples/discovery/mDNS/mDNS.py index 279e2ec2..28d2c9ea 100644 --- a/examples/discovery/mDNS/mDNS.py +++ b/examples/discovery/mDNS/mDNS.py @@ -1,3 +1,4 @@ +import logging import secrets import multiaddr @@ -12,9 +13,17 @@ from libp2p.crypto.secp256k1 import ( ) from libp2p.discovery.events.peerDiscovery import peerDiscovery +logger = logging.getLogger("libp2p.example.discovery.mdns") +logger.setLevel(logging.INFO) +handler = logging.StreamHandler() +handler.setFormatter( + logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +) +logger.addHandler(handler) -def customFunctoion(peerinfo: PeerInfo): - print("Printing peer info from demo file", repr(peerinfo)) + +def onPeerDiscovery(peerinfo: PeerInfo): + logger.info(f"Discovered: {peerinfo.peer_id}") async def main(): @@ -24,17 +33,17 @@ 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) + peerDiscovery.register_peer_discovered_handler(onPeerDiscovery) # Enable mDNS discovery + logger.info("Starting peer Discovery") host = new_host(key_pair=key_pair, enable_mDNS=True) - + await trio.sleep(5) async with host.run(listen_addrs=[listen_addr]): - # Print discovered peers via mDNS try: while True: await trio.sleep(100) except KeyboardInterrupt: - print("Exiting...") + logger.info("Exiting...") if __name__ == "__main__": diff --git a/libp2p/discovery/events/peerDiscovery.py b/libp2p/discovery/events/peerDiscovery.py index 7cbbba7c..6b2d30d0 100644 --- a/libp2p/discovery/events/peerDiscovery.py +++ b/libp2p/discovery/events/peerDiscovery.py @@ -24,11 +24,3 @@ class PeerDiscovery: 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) diff --git a/libp2p/discovery/mdns/broadcaster.py b/libp2p/discovery/mdns/broadcaster.py index 8e14ed96..845704a6 100644 --- a/libp2p/discovery/mdns/broadcaster.py +++ b/libp2p/discovery/mdns/broadcaster.py @@ -1,3 +1,4 @@ +import logging import socket from zeroconf import ( @@ -5,6 +6,8 @@ from zeroconf import ( Zeroconf, ) +logger = logging.getLogger("libp2p.discovery.mdns.broadcaster") + class PeerBroadcaster: """ diff --git a/libp2p/discovery/mdns/listener.py b/libp2p/discovery/mdns/listener.py index b5829123..027c47c4 100644 --- a/libp2p/discovery/mdns/listener.py +++ b/libp2p/discovery/mdns/listener.py @@ -1,3 +1,4 @@ +import logging import socket from zeroconf import ( @@ -12,6 +13,8 @@ from libp2p.discovery.events.peerDiscovery import peerDiscovery from libp2p.peer.id import ID from libp2p.peer.peerinfo import PeerInfo +logger = logging.getLogger("libp2p.discovery.mdns.listner") + class PeerListener(ServiceListener): """mDNS listener — now a true ServiceListener subclass.""" @@ -41,12 +44,12 @@ class PeerListener(ServiceListener): 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) + logger.debug("Discovered Peer:", peer_info.peer_id) def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None: peer_id = self.discovered_services.pop(name) self.peerstore.clear_addrs(peer_id) - print(f"Removed Peer: {peer_id}") + logger.debug(f"Removed Peer: {peer_id}") def update_service(self, zc: Zeroconf, type_: str, name: str) -> None: info = zc.get_service_info(type_, name, timeout=5000) @@ -56,7 +59,7 @@ class PeerListener(ServiceListener): if peer_info: self.peerstore.clear_addrs(peer_info.peer_id) self.peerstore.add_addrs(peer_info.peer_id, peer_info.addrs, 10) - print("Updated Peer", peer_info.peer_id) + logger.debug("Updated Peer", peer_info.peer_id) def _process_discovered_service( self, zeroconf: Zeroconf, type_: str, name: str @@ -67,7 +70,7 @@ class PeerListener(ServiceListener): peer_info = self._extract_peer_info(info) if peer_info: self.peerstore.add_addrs(peer_info.peer_id, peer_info.addrs, 10) - print("Discovered:", peer_info.peer_id) + logger.debug("Discovered:", peer_info.peer_id) def _extract_peer_info(self, info: ServiceInfo) -> PeerInfo | None: try: diff --git a/libp2p/discovery/mdns/mdns.py b/libp2p/discovery/mdns/mdns.py index a76cb39a..e2a89463 100644 --- a/libp2p/discovery/mdns/mdns.py +++ b/libp2p/discovery/mdns/mdns.py @@ -4,6 +4,8 @@ Conforms to https://github.com/libp2p/specs/blob/master/discovery/mdns.md Uses zeroconf for mDNS broadcast/listen. Async operations use trio. """ +import logging + from zeroconf import ( Zeroconf, ) @@ -22,6 +24,8 @@ from .utils import ( stringGen, ) +logger = logging.getLogger("libp2p.discovery.mdns") + SERVICE_TYPE = "_p2p._udp.local." MCAST_PORT = 5353 MCAST_ADDR = "224.0.0.251" @@ -56,7 +60,9 @@ class MDNSDiscovery: def start(self) -> None: """Register this peer and start listening for others.""" - print(f"Starting mDNS discovery for peer {self.peer_id} on port {self.port}") + logger.debug( + f"Starting mDNS discovery for peer {self.peer_id} on port {self.port}" + ) self.broadcaster.register() # Listener is started in constructor diff --git a/pyproject.toml b/pyproject.toml index 91803ada..7ca235fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ dependencies = [ "trio-typing>=0.0.4", "trio>=0.26.0", "fastecdsa==2.3.2; sys_platform != 'win32'", + "zeroconf (>=0.147.0,<0.148.0)", ] classifiers = [ "Development Status :: 4 - Beta",