X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=eventlet%2Feventlet%2Fhubs%2Ftimer.py;fp=eventlet%2Feventlet%2Fhubs%2Ftimer.py;h=0000000000000000000000000000000000000000;hb=358bd9258c2b6d2ee74de4dfd07a5123107abad4;hp=4031a53d8759a717cc63302fc1f41de81c4be100;hpb=376ff3bfe7071cc0793184a378c4e74508fb0d97;p=packages%2Ftrusty%2Fpython-eventlet.git diff --git a/eventlet/eventlet/hubs/timer.py b/eventlet/eventlet/hubs/timer.py deleted file mode 100644 index 4031a53..0000000 --- a/eventlet/eventlet/hubs/timer.py +++ /dev/null @@ -1,105 +0,0 @@ -import traceback - -from eventlet.support import greenlets as greenlet, six -from eventlet.hubs import get_hub - -""" If true, captures a stack trace for each timer when constructed. This is -useful for debugging leaking timers, to find out where the timer was set up. """ -_g_debug = False - - -class Timer(object): - def __init__(self, seconds, cb, *args, **kw): - """Create a timer. - seconds: The minimum number of seconds to wait before calling - cb: The callback to call when the timer has expired - *args: The arguments to pass to cb - **kw: The keyword arguments to pass to cb - - This timer will not be run unless it is scheduled in a runloop by - calling timer.schedule() or runloop.add_timer(timer). - """ - self.seconds = seconds - self.tpl = cb, args, kw - self.called = False - if _g_debug: - self.traceback = six.StringIO() - traceback.print_stack(file=self.traceback) - - @property - def pending(self): - return not self.called - - def __repr__(self): - secs = getattr(self, 'seconds', None) - cb, args, kw = getattr(self, 'tpl', (None, None, None)) - retval = "Timer(%s, %s, *%s, **%s)" % ( - secs, cb, args, kw) - if _g_debug and hasattr(self, 'traceback'): - retval += '\n' + self.traceback.getvalue() - return retval - - def copy(self): - cb, args, kw = self.tpl - return self.__class__(self.seconds, cb, *args, **kw) - - def schedule(self): - """Schedule this timer to run in the current runloop. - """ - self.called = False - self.scheduled_time = get_hub().add_timer(self) - return self - - def __call__(self, *args): - if not self.called: - self.called = True - cb, args, kw = self.tpl - try: - cb(*args, **kw) - finally: - try: - del self.tpl - except AttributeError: - pass - - def cancel(self): - """Prevent this timer from being called. If the timer has already - been called or canceled, has no effect. - """ - if not self.called: - self.called = True - get_hub().timer_canceled(self) - try: - del self.tpl - except AttributeError: - pass - - # No default ordering in 3.x. heapq uses < - # FIXME should full set be added? - def __lt__(self, other): - return id(self) < id(other) - - -class LocalTimer(Timer): - - def __init__(self, *args, **kwargs): - self.greenlet = greenlet.getcurrent() - Timer.__init__(self, *args, **kwargs) - - @property - def pending(self): - if self.greenlet is None or self.greenlet.dead: - return False - return not self.called - - def __call__(self, *args): - if not self.called: - self.called = True - if self.greenlet is not None and self.greenlet.dead: - return - cb, args, kw = self.tpl - cb(*args, **kw) - - def cancel(self): - self.greenlet = None - Timer.cancel(self)