MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / StructNestedModel

Class StructNestedModel

projects/Python/proto/test.py:7967–8040  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7965
7966# Fast Binary Encoding StructNested model
7967class StructNestedModel(fbe.Model):
7968 __slots__ = "_model",
7969
7970 def __init__(self, buffer=None):
7971 super().__init__(buffer)
7972 self._model = FieldModelStructNested(self.buffer, 4)
7973
7974 @property
7975 def model(self):
7976 return self._model
7977
7978 # Get the model size
7979 @property
7980 def fbe_size(self):
7981 return self._model.fbe_size + self._model.fbe_extra
7982
7983 # Get the model type
7984 @property
7985 def fbe_type(self):
7986 return self.TYPE
7987
7988 TYPE = FieldModelStructNested.TYPE
7989
7990 # Check if the struct value is valid
7991 def verify(self):
7992 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
7993 return False
7994
7995 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
7996 if fbe_full_size < self._model.fbe_size:
7997 return False
7998
7999 return self._model.verify()
8000
8001 # Create a new model (begin phase)
8002 def create_begin(self):
8003 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
8004 return fbe_begin
8005
8006 # Create a new model (end phase)
8007 def create_end(self, fbe_begin):
8008 fbe_end = self.buffer.size
8009 fbe_full_size = fbe_end - fbe_begin
8010 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
8011 return fbe_full_size
8012
8013 # Serialize the struct value
8014 def serialize(self, value):
8015 fbe_begin = self.create_begin()
8016 self._model.set(value)
8017 fbe_full_size = self.create_end(fbe_begin)
8018 return fbe_full_size
8019
8020 # Deserialize the struct value
8021 def deserialize(self, value=None):
8022 if value is None:
8023 value = StructNested()
8024

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56