1414
1515from hello import Group , ServiceQuery , Sender , Receiver , Service , ServiceMatcher , AbstractScheduler
1616
17- log = get_logger ('Discoverer' )
18-
1917
2018class DiscoveryEventType (Enum ):
2119 DISCOVERED = 'discovered'
@@ -37,6 +35,12 @@ def __call__(self, event: DiscoveryEvent) -> None: ...
3735
3836class Discoverer :
3937
38+ def __enter__ (self ) -> 'Discoverer' :
39+ return self
40+
41+ def __exit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
42+ self .stop ()
43+
4044 def start (self , group : Group , query : ServiceQuery | None = None ) -> None :
4145 raise NotImplementedError ()
4246
@@ -68,12 +72,7 @@ def __init__(self, sender: Sender, receiver: Receiver, max_workers: int = 8) ->
6872 event_type : [] for event_type in DiscoveryEventType
6973 }
7074 self ._handler_executor = ThreadPoolExecutor (max_workers = max_workers )
71-
72- def __enter__ (self ) -> Discoverer :
73- return self
74-
75- def __exit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
76- self .stop ()
75+ self .log = get_logger (type (self ).__name__ )
7776
7877 def start (self , group : Group , query : ServiceQuery | None = None ) -> None :
7978 self ._group = group
@@ -82,27 +81,27 @@ def start(self, group: Group, query: ServiceQuery | None = None) -> None:
8281 self ._sender .start (group .query ())
8382 self ._receiver .register (self ._handle_message )
8483 self ._receiver .start (group .hello ())
85- log .info ('Discoverer started' , group = self ._group , query = query )
84+ self . log .info ('Discoverer started' , group = self ._group , query = query )
8685
8786 def stop (self ) -> None :
8887 self ._group = None
8988 self ._matcher = None
9089 self ._sender .stop ()
9190 self ._receiver .deregister (self ._handle_message )
9291 self ._receiver .stop ()
93- log .info ('Discoverer stopped' )
92+ self . log .info ('Discoverer stopped' )
9493
9594 def discover (self , query : ServiceQuery | None = None , log_level : int = INFO ) -> None :
9695 if self ._group :
9796 if query :
9897 self ._matcher = ServiceMatcher (query )
9998 if self ._matcher :
10099 self ._sender .send (self ._matcher .query )
101- log .log (log_level , 'Service discovery initiated' , group = self ._group , query = self ._matcher .query )
100+ self . log .log (log_level , 'Service discovery initiated' , group = self ._group , query = self ._matcher .query )
102101 else :
103- log .warning ('Cannot discover services, no query provided' , group = self ._group )
102+ self . log .warning ('Cannot discover services, no query provided' , group = self ._group )
104103 else :
105- log .warning ('Cannot discover services, discoverer not started' , query = query )
104+ self . log .warning ('Cannot discover services, discoverer not started' , query = query )
106105
107106 def register (self , handler : OnDiscoveryEvent , types : set [DiscoveryEventType ] | None = None ) -> None :
108107 for event_type in types if types else self ._get_event_types ():
@@ -123,10 +122,10 @@ def _handle_message(self, message: dict[str, Any]) -> None:
123122 try :
124123 service = Service (UUID (message ['uuid' ]), message ['name' ], message ['role' ],
125124 message .get ('urls' , {}), message .get ('info' , {}), message ['address' ])
126- log .debug ('Service received' , service = service , group = self ._group )
125+ self . log .debug ('Service received' , service = service , group = self ._group )
127126 self ._handle_service (service , self ._group , self ._matcher )
128127 except Exception as error :
129- log .warn ('Invalid service received' , group = self ._group , data = message , error = error )
128+ self . log .warn ('Invalid service received' , group = self ._group , data = message , error = error )
130129
131130 def _handle_service (self , service : Service , group : Group , matcher : ServiceMatcher ) -> None :
132131 if matcher .matches (service ):
@@ -138,13 +137,13 @@ def _create_event(self, group: Group, matcher: ServiceMatcher, stored: Service |
138137 service : Service ) -> DiscoveryEvent :
139138 if stored :
140139 if stored != service :
141- log .info ('Service updated' , group = group , old_service = stored , new_service = service )
140+ self . log .info ('Service updated' , group = group , old_service = stored , new_service = service )
142141 return DiscoveryEvent (group , matcher .query , service , DiscoveryEventType .UPDATED )
143142 else :
144- log .debug ('Service unchanged' , group = group , service = service )
143+ self . log .debug ('Service unchanged' , group = group , service = service )
145144 return DiscoveryEvent (group , matcher .query , service , DiscoveryEventType .UNCHANGED )
146145 else :
147- log .info ('Service discovered' , group = group , service = service )
146+ self . log .info ('Service discovered' , group = group , service = service )
148147 return DiscoveryEvent (group , matcher .query , service , DiscoveryEventType .DISCOVERED )
149148
150149 def _handle_event (self , event : DiscoveryEvent ) -> None :
@@ -157,7 +156,7 @@ def _execute_handler(self, handler: OnDiscoveryEvent, event: DiscoveryEvent) ->
157156 try :
158157 handler (event )
159158 except Exception as error :
160- log .warn ('Error in event handler execution' , event = event , error = error )
159+ self . log .warn ('Error in event handler execution' , event = event , error = error )
161160
162161
163162class ScheduledDiscoverer (AbstractScheduler [ServiceQuery ], Discoverer ):
0 commit comments