eventCounters.py (1137B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dogma\eventCounters.py 2 from contextlib import contextmanager 3 4 class EventCount(object): 5 6 def __init__(self): 7 self.__eventCount = {} 8 9 @contextmanager 10 def Event(self, key): 11 self._AddEventCount(key) 12 try: 13 yield 14 finally: 15 self._DecreaseEventCount(key) 16 17 self._OnEvent(key) 18 19 def _AddEventCount(self, key): 20 if key not in self.__eventCount: 21 self.__eventCount[key] = 1 22 else: 23 self.__eventCount[key] += 1 24 25 def _DecreaseEventCount(self, key): 26 self.__eventCount[key] -= 1 27 if self.__eventCount[key] < 1: 28 del self.__eventCount[key] 29 30 def IsEventHappening(self, key): 31 if key is None: 32 return False 33 return self.__eventCount.get(key, 0) > 0 34 35 def _OnEvent(self, key): 36 pass 37 38 39 class BrainUpdate(EventCount): 40 41 def __init__(self, callback): 42 super(BrainUpdate, self).__init__() 43 self.__callback = callback 44 45 def _OnEvent(self, key): 46 self.__callback(key)