"""An IOLoop timeout, a UNIX timestamp and a callback"""
# Reduce memory overhead when there are lots of pending callbacks
- __slots__ = ['deadline', 'callback', 'tiebreaker']
+ __slots__ = ['deadline', 'callback', 'tdeadline']
def __init__(self, deadline, callback, io_loop):
if not isinstance(deadline, numbers.Real):
raise TypeError("Unsupported deadline %r" % deadline)
self.deadline = deadline
self.callback = callback
- self.tiebreaker = next(io_loop._timeout_counter)
+ self.tdeadline = (deadline, next(io_loop._timeout_counter))
# Comparison methods to sort by deadline, with object id as a tiebreaker
# to guarantee a consistent ordering. The heapq module uses __le__
# in python2.5, and __lt__ in 2.6+ (sort() and most other comparisons
# use __lt__).
def __lt__(self, other):
- return ((self.deadline, self.tiebreaker) <
- (other.deadline, other.tiebreaker))
+ return self.tdeadline < other.tdeadline
def __le__(self, other):
- return ((self.deadline, self.tiebreaker) <=
- (other.deadline, other.tiebreaker))
+ return self.tdeadline <= other.tdeadline
class PeriodicCallback(object):