NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)