X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=loctrkd%2Fzmsg.py;fp=loctrkd%2Fzmsg.py;h=9dae60540f46019957a72121700c6ada5df081de;hb=be1de0bb68c5c4acf2edd6f04c5ea8e40d9f31fb;hp=ae469a23b6afe416ac9a1cc6f8e9abe25b2ab022;hpb=023da3cd78841eb34d8286cf289995be658f0fa2;p=loctrkd.git diff --git a/loctrkd/zmsg.py b/loctrkd/zmsg.py index ae469a2..9dae605 100644 --- a/loctrkd/zmsg.py +++ b/loctrkd/zmsg.py @@ -166,3 +166,28 @@ class Resp(_Zmsg): self.when = when self.packet = buffer[24:] + + +class Report(_Zmsg): + """Broadcast Zzmq message with "rectified" proto-agnostic json data""" + + KWARGS = (("imei", None), ("payload", "")) + + @property + def packed(self) -> bytes: + return ( + pack( + "16s", + "0000000000000000" + if self.imei is None + else self.imei.encode(), + ) + + self.payload.encode() + ) + + def decode(self, buffer: bytes) -> None: + imei = buffer[:16] + self.imei = ( + None if imei == b"0000000000000000" else imei.decode().strip("\0") + ) + self.payload = buffer[16:].decode()