MemoryBoundedQueue#

class FIREQ_SERVER.utils.memory_queue.MemoryBoundedQueue(max_memory_bytes: int = 1073741824)[source]#

Bases: object

Thread-safe queue that bounds by memory usage, not item count.

Designed for streaming FPGA data where chunks vary greatly in size. Blocks on put() when memory limit is reached (backpressure).

The queue preserves FIFO order - items come out in the same order they went in. Server NEVER reorders; it includes chunk_index in metadata for client-side reassembly.

put(item: object, timeout: float | None = None) → None[source]#

Put item into queue, blocking if memory limit reached.

Items are added to the end of the queue (FIFO order preserved).

Parameters:
  • item – Item to enqueue.

  • timeout – Max seconds to wait (None = wait forever).

Raises:

Full – If timeout expires before space available.

get(timeout: float | None = None) → object[source]#

Get item from queue, blocking if empty.

Items are removed from the front of the queue (FIFO order preserved).

Parameters:

timeout – Max seconds to wait (None = wait forever).

Returns:

Dequeued item.

Raises:

Empty – If timeout expires before item available.

clear() → None[source]#

Clear all items from queue.

close() → None[source]#

Signal queue to stop blocking on put/get.