event_queue.py 652 B

12345678910111213141516171819202122232425
  1. from infinity import INFINITY
  2. class EventQueue(object):
  3. def __init__(self):
  4. self.event_list = []
  5. def __str__(self):
  6. return str(self.event_list)
  7. def isEmpty(self):
  8. return not self.event_list
  9. def getEarliestTime(self):
  10. return INFINITY if self.isEmpty() else self.event_list[0][0]
  11. def add(self, event):
  12. self.event_list.append(event)
  13. self.event_list.sort()
  14. return id(event)
  15. def remove(self, event_id):
  16. self.event_list = sorted([e for e in self.event_list if id(e) != event_id])
  17. def pop(self):
  18. return self.event_list.pop(0)[1]