X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp-api%2Fpython%2Fvpp_papi%2Fvpp_serializer.py;h=7f5c5ace2dc877abb0918b1258d33b0acb3c26b9;hb=a7564e8004fd6d9a63eb0605f752f27a71403645;hp=146a8f6919a1015a4ce6cec7dd5161475595b946;hpb=a5ee900fb75201bbfceaf13c8bc57a13ed094988;p=vpp.git diff --git a/src/vpp-api/python/vpp_papi/vpp_serializer.py b/src/vpp-api/python/vpp_papi/vpp_serializer.py index 146a8f6919a..7f5c5ace2dc 100644 --- a/src/vpp-api/python/vpp_papi/vpp_serializer.py +++ b/src/vpp-api/python/vpp_papi/vpp_serializer.py @@ -24,8 +24,6 @@ import logging # logger.setLevel(logging.DEBUG) # logger = logging.getLogger(__name__) -FORMAT = "[%(filename)s:%(lineno)s - %(funcName)s() ] %(message)s" -logging.basicConfig(format=FORMAT) class BaseTypes(): @@ -72,6 +70,8 @@ class FixedList_u8(): self.size = self.packer.size def pack(self, list, kwargs): + """Packs a fixed length bytestring. Left-pads with zeros + if input data is too short.""" logger.debug("Data: {}".format(list)) if len(list) > self.num: @@ -131,8 +131,7 @@ class VLAList(): # u8 array if self.packer.size == 1: - p = BaseTypes('u8', len(list)) - return p.pack(list) + return bytearray(list) for e in list: b += self.packer.pack(e) @@ -166,6 +165,10 @@ class VLAList_legacy(): def pack(self, list, kwargs=None): logger.debug("Data: {}".format(list)) + + if self.packer.size == 1: + return bytes(list) + b = bytes() for e in list: b += self.packer.pack(e) @@ -317,7 +320,11 @@ class VPPType(): .format(a)) b += b'\x00' * self.packers[i].size continue - b += self.packers[i].pack(data[a], kwargs) + + if isinstance(self.packers[i], VPPType): + b += self.packers[i].pack(data[a], kwargs[a]) + else: + b += self.packers[i].pack(data[a], kwargs) return b def unpack(self, data, offset=0, result=None): @@ -330,3 +337,7 @@ class VPPType(): result.append(x) offset += p.size return self.tuple._make(result) + + +class VPPMessage(VPPType): + pass