Timer queue is now tuple instead of using __lt__ on objects

This commit is contained in:
Adam Holmberg
2015-05-11 11:53:33 -05:00
parent 0306804188
commit dd737915a9

View File

@@ -904,9 +904,6 @@ class Timer(object):
if timeout < 0: if timeout < 0:
self.callback() self.callback()
def __lt__(self, other):
return self.end < other.end
def cancel(self): def cancel(self):
self.canceled = True self.canceled = True
@@ -931,7 +928,7 @@ class TimerManager(object):
""" """
called from client thread with a Timer object called from client thread with a Timer object
""" """
self._new_timers.append(timer) self._new_timers.append((timer.end, timer))
def service_timeouts(self): def service_timeouts(self):
""" """
@@ -942,12 +939,11 @@ class TimerManager(object):
queue = self._queue queue = self._queue
new_timers = self._new_timers new_timers = self._new_timers
while self._new_timers: while self._new_timers:
t = new_timers.pop() heappush(queue, new_timers.pop())
heappush(queue, t)
now = time.time() now = time.time()
while queue: while queue:
try: try:
timer = queue[0] timer = queue[0][1]
if timer.finish(now): if timer.finish(now):
heappop(queue) heappop(queue)
else: else:
@@ -958,14 +954,14 @@ class TimerManager(object):
@property @property
def next_timeout(self): def next_timeout(self):
try: try:
return self._queue[0].end return self._queue[0][0]
except IndexError: except IndexError:
pass pass
@property @property
def next_offset(self): def next_offset(self):
try: try:
next_end = self._queue[0].end next_end = self._queue[0][0]
return next_end - time.time() return next_end - time.time()
except IndexError: except IndexError:
pass pass