def unpack(self, msg: Buffer): definition: OrderedDict = self.types[0].definition length = VarInt.unpack(msg) items = list(definition.items()) res = self.types[0]() for _ in range(length): index = VarInt.unpack(msg) setattr(res, items[index][0], items[index][1].unpack(msg)) return self(res)
def unpack(self, msg: Buffer): obj = {} count = VarInt.unpack(msg) for _ in range(count): key = self.types[0].unpack(msg) value = self.types[1].unpack(msg) obj[key] = value return self(obj)
def pack(self): definition: OrderedDict = self.types[0].definition values = [] for i, item in enumerate(definition.items()): value = getattr(self.data, item[0], None) if value is not None: values.append((i, value)) res = VarInt(len(values)).pack() for i, v in values: res.extend(VarInt(i).pack()) res.extend(v.pack()) return res
def pack(self): return VarInt(self.id).pack()
def unpack(cls, msg: Buffer): return cls(VarInt.unpack(msg))
def pack(self): res = VarInt(len(self.data)).pack() for i in self.data: res.extend(i.pack()) return res
def unpack(self, msg: Buffer): obj = [] count = VarInt.unpack(msg) for _ in range(count): obj.append(self.types[0].unpack(msg)) return self(obj)
def pack(self): res = VarInt(self.type).pack() res.extend(self.data.pack())
def unpack(self, msg: Buffer): index = VarInt.unpack(msg) return self(self.types[index].unpack(msg))
def pack(self): res = VarInt(len(self.data)).pack() for k, v in self.data.items(): res.extend(k.pack()) res.extend(v.pack()) return res