blob: c9a0ddc97d612be3e84e155a40de0b9b37b71dbe [file] [log] [blame]
class CircularByteBuffer:
"""Byte buffer handmade for terminal output"""
size: int = 0
start: int = 0
buffer: bytearray
def __init__(self, size: int):
self.buffer = bytearray(size)
def writeByte(self, byte: int):
if self.size < len(self.buffer):
self.buffer[self.size] = byte
self.size += 1
return
self.buffer[self.start % self.size] = byte
self.start = (self.start + 1) % self.size
def write(self, data: bytes):
for byte in data:
self.writeByte(byte)
def read(self):
if self.size <= len(self.buffer):
return self.buffer[self.start:self.start + self.size]
else:
return self.buffer[self.start:] + self.buffer[:self.start]