Initial Release of IGNCore version 2.5
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import time
|
||||
|
||||
|
||||
class DelayQueue:
|
||||
def __init__(self, recovery: int, burst=0):
|
||||
self.recovery = recovery
|
||||
self.burst = burst
|
||||
self.items = []
|
||||
self.next_packet = 0
|
||||
|
||||
def enqueue(self, item):
|
||||
self.items.insert(0, item)
|
||||
|
||||
def dequeue(self):
|
||||
if self.items:
|
||||
t = time.time()
|
||||
time_with_burst = t - (self.burst * self.recovery)
|
||||
if self.next_packet < time_with_burst:
|
||||
self.next_packet = time_with_burst
|
||||
|
||||
if t >= self.next_packet:
|
||||
self.next_packet += self.recovery
|
||||
return self.items.pop()
|
||||
else:
|
||||
return None
|
||||
|
||||
def __len__(self):
|
||||
return len(self.items)
|
||||
|
||||
def clear(self):
|
||||
self.items = []
|
||||
|
||||
def is_empty(self):
|
||||
return len(self.items) == 0
|
||||
Reference in New Issue
Block a user