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

__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()