consumer.py (1803B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\content\client\consumer.py 2 import uthread2 3 import blue 4 from abc import ABCMeta 5 import signals 6 from content.client.api import get_content_registry 7 8 class BaseContentConsumer(object): 9 __metaclass__ = ABCMeta 10 content_id = None 11 12 def __init__(self): 13 self.on_updated = signals.Signal('content_consumer.on_updated') 14 15 def register(self): 16 get_content_registry().register_consumer(consumer=self) 17 18 def unregister(self): 19 get_content_registry().unregister_consumer(consumer=self) 20 21 def get(self, key): 22 return get_content_registry().get(self.content_id, key) 23 24 def get_all(self): 25 return get_content_registry().get_all(self.content_id) 26 27 def on_content_updated(self, *args, **kwargs): 28 self.on_updated(*args, **kwargs) 29 30 31 class BaseRefreshingContentConsumer(BaseContentConsumer): 32 __metaclass__ = ABCMeta 33 default_refresh_interval = 60 34 35 def __init__(self, refresh_interval = None): 36 super(BaseRefreshingContentConsumer, self).__init__() 37 self._refresh_interval = refresh_interval if refresh_interval else self.default_refresh_interval 38 self._running = False 39 40 def register(self): 41 super(BaseRefreshingContentConsumer, self).register() 42 self._running = True 43 uthread2.start_tasklet(self._refresh_task) 44 45 def unregister(self): 46 super(BaseRefreshingContentConsumer, self).unregister() 47 self._running = False 48 49 def _refresh_task(self): 50 while self._running: 51 blue.pyos.BeNice() 52 uthread2.sleep(self._refresh_interval) 53 if not self._running: 54 break 55 get_content_registry().refresh(self.content_id, self._refresh_interval)