mitracomm.py 1.02 KB
from . import Streamer as BaseStreamer

# 2 byte pertama size


class Streamer(BaseStreamer):
    def get_size(self, raw):
        a, b = raw
        a = a * 256
        return a + b

    # Override Stremer.get
    def get(self, raw):
        if self.size:
            size = self.size - len(self.raw)
        else:
            if isinstance(raw, str):
                raw = raw.encode()
            raw = self.raw + raw
            if len(raw) < 2:
                self.raw = raw
                return
            size = self.size = self.get_size(raw[:2])
            self.raw = b''
            raw = raw[2:]
        self.raw += raw[:size]
        if len(self.raw) == self.size:
            raw_iso = self.raw
            self.size = 0
            self.raw = raw[size:]  # Sisa
            return raw_iso
        self.raw += raw[size:]

    # Override Stremer.set
    def set(self, raw):
        size = len(raw)
        a = int(size / 256)
        b = size % 256
        header = bytes([a]) + bytes([b])
        return header + raw.encode()