diff options
author | Rob Austein <sra@hactrn.net> | 2009-11-30 22:39:42 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-11-30 22:39:42 +0000 |
commit | 909469b30754baf684566d97b1f3a31a6db0656b (patch) | |
tree | 3de396eb30f720b2b2e3a7172a0b5854f9fc1a0f /rpkid/rpki/async.py | |
parent | 32659a7d842bb447bfd8d0da7f3c58657f34248c (diff) |
Timer debugging code
svn path=/rpkid/rpki/async.py; revision=2886
Diffstat (limited to 'rpkid/rpki/async.py')
-rw-r--r-- | rpkid/rpki/async.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/rpkid/rpki/async.py b/rpkid/rpki/async.py index ee82800a..1addb495 100644 --- a/rpkid/rpki/async.py +++ b/rpkid/rpki/async.py @@ -92,6 +92,11 @@ class timer(object): methods to other objects. """ + ## @var debug + # Verbose chatter about timers + + debug = True + ## @var queue # Timer queue, shared by all timer instances (there can be only one queue). @@ -102,6 +107,10 @@ class timer(object): self.set_handler(handler) if errback is not None: self.set_errback(errback) + self.when = None + if self.debug: + bt = traceback.extract_stack(limit = 3) + rpki.log.debug("Creating %r from %s:%d" % (self, bt[0][0], bt[0][1])) def set(self, when): """ @@ -110,6 +119,9 @@ class timer(object): that the timer should expire immediately, which can be useful in avoiding an excessively deep call stack. """ + if self.debug: + bt = traceback.extract_stack(limit = 3) + rpki.log.debug("Setting %r to %r from %s:%d" % (self, when, bt[0][0], bt[0][1])) if when is None: self.when = rpki.sundial.now() elif isinstance(when, rpki.sundial.timedelta): @@ -124,10 +136,17 @@ class timer(object): def __cmp__(self, other): return cmp(self.when, other.when) + if debug: + def __del__(self): + rpki.log.debug("Deleting %r" % self) + def cancel(self): """ Cancel a timer, if it was set. """ + if self.debug: + bt = traceback.extract_stack(limit = 3) + rpki.log.debug("Canceling %r from %s:%d" % (self, bt[0][0], bt[0][1])) try: self.queue.remove(self) except ValueError: @@ -181,7 +200,7 @@ class timer(object): t.errback(e) def __repr__(self): - return "<%s %r %r>" % (self.__class__.__name__, self.when, self.handler) + return "<%s %r %r at 0x%x>" % (self.__class__.__name__, self.when, self.handler, id(self)) @classmethod def seconds_until_wakeup(cls): |