@@ -38,10 +38,13 @@ def discover(self, query: ServiceQuery | None = None) -> None:
3838 def get_services (self ) -> dict [str , ServiceInfo ]:
3939 raise NotImplementedError ()
4040
41- def register (self , callback : OnDiscoveryEvent ) -> None :
41+ def register (self , handler : OnDiscoveryEvent ) -> None :
4242 raise NotImplementedError ()
4343
44- def deregister (self , callback : OnDiscoveryEvent ) -> None :
44+ def deregister (self , handler : OnDiscoveryEvent ) -> None :
45+ raise NotImplementedError ()
46+
47+ def get_handlers (self ) -> list [OnDiscoveryEvent ]:
4548 raise NotImplementedError ()
4649
4750
@@ -52,8 +55,8 @@ def __init__(self, sender: Sender, receiver: Receiver) -> None:
5255 self ._receiver = receiver
5356 self ._group : Group | None = None
5457 self ._matcher : ServiceMatcher | None = None
55- self ._services : dict [str , ServiceInfo ] = {}
56- self ._callbacks : list [OnDiscoveryEvent ] = []
58+ self ._cache : dict [str , ServiceInfo ] = {}
59+ self ._handlers : list [OnDiscoveryEvent ] = []
5760
5861 def __enter__ (self ) -> Discoverer :
5962 return self
@@ -85,28 +88,27 @@ def discover(self, query: ServiceQuery | None = None) -> None:
8588 log .warning ('Cannot discover services, discoverer not started' , query = query )
8689
8790 def get_services (self ) -> dict [str , ServiceInfo ]:
88- return self ._services .copy ()
91+ return self ._cache .copy ()
8992
90- def register (self , callback : OnDiscoveryEvent ) -> None :
91- self ._callbacks .append (callback )
93+ def register (self , handler : OnDiscoveryEvent ) -> None :
94+ self ._handlers .append (handler )
9295
93- def deregister (self , callback : OnDiscoveryEvent ) -> None :
94- self ._callbacks .remove (callback )
96+ def deregister (self , handler : OnDiscoveryEvent ) -> None :
97+ self ._handlers .remove (handler )
9598
96- def _handle_message (self , message : dict [ str , Any ] ) -> None :
97- service : ServiceInfo | None = None
99+ def get_handlers (self ) -> list [ OnDiscoveryEvent ] :
100+ return self . _handlers . copy ()
98101
102+ def _handle_message (self , message : dict [str , Any ]) -> None :
99103 try :
100104 service = ServiceInfo (** message )
105+ self ._handle_service (service )
101106 except Exception as error :
102107 log .warn ('Failed to handle received message' , data = message , error = error )
103108
104- if service :
105- self ._handle_service (service )
106-
107109 def _handle_service (self , service : ServiceInfo ) -> None :
108110 if self ._matcher and self ._matcher .matches (service ):
109- cached = self ._services .get (service .name )
111+ cached = self ._cache .get (service .name )
110112
111113 if event := self ._create_event (cached , service ):
112114 self ._handle_event (event )
@@ -116,17 +118,17 @@ def _create_event(self, cached: ServiceInfo | None, service: ServiceInfo) -> Dis
116118 if cached != service :
117119 log .info ('Service updated' , old_service = cached , new_service = service )
118120 return DiscoveryEvent (service , DiscoveryEventType .UPDATED )
121+ else :
122+ return None
119123 else :
120124 log .info ('Service discovered' , service = service )
121125 return DiscoveryEvent (service , DiscoveryEventType .DISCOVERED )
122126
123- return None
124-
125127 def _handle_event (self , event : DiscoveryEvent ) -> None :
126128 service = event .service
127- self ._services [service .name ] = service
128- for callback in self ._callbacks :
129+ self ._cache [service .name ] = service
130+ for callback in self ._handlers :
129131 try :
130132 callback (event )
131133 except Exception as error :
132- log .warn ('Error in callback execution' , service = service , error = error )
134+ log .warn ('Error in event handler execution' , event = event , error = error )
0 commit comments