priorityQueue.py (1118B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dbuff\common\priorityQueue.py 2 import heapq 3 4 class BuffPriorityQueue(object): 5 _REMOVED = '<removed-buff>' 6 7 def __init__(self): 8 self._queue = [] 9 self._entries = {} 10 11 def Add(self, buff, evaluationTimestamp): 12 entry = self._entries.get(buff) 13 if entry: 14 if entry[0] == evaluationTimestamp: 15 return 16 self.Remove(buff) 17 entry = [evaluationTimestamp, buff] 18 heapq.heappush(self._queue, entry) 19 self._entries[buff] = entry 20 21 def Remove(self, buff): 22 entry = self._entries.pop(buff) 23 entry[1] = self._REMOVED 24 25 def PopNextReadyBuff(self, now): 26 while self._queue: 27 evaluationTimestamp, buff = self._queue[0] 28 if buff is self._REMOVED: 29 heapq.heappop(self._queue) 30 else: 31 if evaluationTimestamp < now: 32 heapq.heappop(self._queue) 33 del self._entries[buff] 34 return buff 35 return None