"""The Transmission Queue is a max heap of messages to be transmitted.
Messages must support the `__lt__`, `__le__`, `__eq__`, `__ge__`, and `__gt__` operators.
This enables to the max heap to compare messages based on their priority.
"""
from . import priority_queue as pq
queue = []
limit = 100
[docs]def push(msg):
"""Push a msg into the transmission queue
:param msg: The message to push
:type msg: Message | NaiveMessage | ChunkMessage
"""
if len(queue) < limit:
pq.push(queue, msg)
else:
raise Exception("Queue is full")
[docs]def peek():
"""Returns the next message to be transmitted
:return: The next message to be transmitted
:rtype: Message | NaiveMessage | ChunkMessage
"""
return queue[0]
[docs]def pop():
"""Returns the next message to be transmitted and removes it from the transmission queue
:return: The next message to be transmitted
:rtype: Message | NaiveMessage | ChunkMessage
"""
return pq.pop(queue)
[docs]def empty():
"""Returns if the transmission queue is empty"""
return len(queue) == 0
[docs]def clear():
"""Clears the transmission queue"""
global queue
queue = []