@@ -242,14 +242,16 @@ def __init__(
242242 for h in handlers :
243243 self .service_state_changed .register_handler (h )
244244
245- def _setup (self ) -> None :
245+ def _async_start (self ) -> None :
246246 """Generate the next time and setup listeners.
247247
248248 Must be called by uses of this base class after they
249249 have finished setting their properties.
250250 """
251251 self ._generate_first_next_time ()
252- self .zc .add_listener (self , [DNSQuestion (type_ , _TYPE_PTR , _CLASS_IN ) for type_ in self .types ])
252+ self .zc .async_add_listener (self , [DNSQuestion (type_ , _TYPE_PTR , _CLASS_IN ) for type_ in self .types ])
253+ # Only start queries after the listener is installed
254+ self ._browser_task = cast (asyncio .Task , asyncio .ensure_future (self .async_browser_task ()))
253255
254256 def _generate_first_next_time (self ) -> None :
255257 """Generate the initial next query times.
@@ -374,10 +376,10 @@ def _fire_service_state_changed_event(self, event: Tuple[Tuple[str, str], Servic
374376 state_change = state_change ,
375377 )
376378
377- def cancel (self ) -> None :
379+ def _async_cancel (self ) -> None :
378380 """Cancel the browser."""
379381 self .done = True
380- self .zc .remove_listener (self )
382+ self .zc .async_remove_listener (self )
381383
382384 def generate_ready_queries (self ) -> List [DNSOutgoing ]:
383385 """Generate the service browser query for any type that is due."""
@@ -454,20 +456,15 @@ def __init__(
454456 self .queue = get_best_available_queue ()
455457 self .daemon = True
456458 self .start ()
457- self ._setup ()
458- # Start queries after the listener is installed in _setup
459- zc .loop .call_soon_threadsafe (self ._async_start_browser )
459+ zc .loop .call_soon_threadsafe (self ._async_start )
460460 self .name = "zeroconf-ServiceBrowser-%s-%s" % (
461461 '-' .join ([type_ [:- 7 ] for type_ in self .types ]),
462462 getattr (self , 'native_id' , self .ident ),
463463 )
464464
465- def _async_start_browser (self ) -> None :
466- """Start the browser from the event loop."""
467- self ._browser_task = cast (asyncio .Task , asyncio .ensure_future (self .async_browser_task ()))
468-
469- def _async_cancel_browser_soon (self ) -> None :
465+ def _async_cancel_soon (self ) -> None :
470466 """Cancel the browser from the event loop."""
467+ self ._async_cancel ()
471468 if self ._browser_task :
472469 asyncio .ensure_future (self ._async_cancel_browser ())
473470
@@ -476,8 +473,7 @@ def cancel(self) -> None:
476473 assert self .zc .loop is not None
477474 assert self .queue is not None
478475 self .queue .put (None )
479- self .zc .loop .call_soon_threadsafe (self ._async_cancel_browser_soon )
480- super ().cancel ()
476+ self .zc .loop .call_soon_threadsafe (self ._async_cancel_soon )
481477 self .join ()
482478
483479 def run (self ) -> None :
0 commit comments