__init__.py (1304B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\timers\__init__.py 2 import uthread2 3 4 class Timer(object): 5 6 def __init__(self, manager, timerID, time, channel): 7 self._manager = manager 8 self._id = timerID 9 self._time = time 10 self._channel = channel 11 self._channel.SendMessage(self._id) 12 self._timerThread = uthread2.StartTasklet(self._OnTimeout, stackless_tracing_enabled=False) 13 14 def _OnTimeout(self): 15 uthread2.SleepSim(self._time) 16 self.ClearTimer() 17 18 def ClearTimer(self): 19 self._channel.SendMessage(None) 20 self._manager.RemoveTimer(self._id) 21 22 def Stop(self): 23 self._timerThread.kill() 24 25 26 class TimerManager(object): 27 28 def __init__(self): 29 self._activeTimers = {} 30 self._nextTimerID = 1 31 32 def StartTimer(self, time, channel): 33 self._activeTimers[self._nextTimerID] = Timer(self, self._nextTimerID, time, channel) 34 self._nextTimerID += 1 35 36 def RemoveTimer(self, timerID): 37 if timerID in self._activeTimers: 38 del self._activeTimers[timerID] 39 40 def ClearTimer(self, timerID): 41 timer = self._activeTimers.get(timerID) 42 if timer is not None: 43 timer.Stop() 44 timer.ClearTimer()