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

Class StructHashModel

projects/Python/proto/test.py:14615–14688  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14613
14614# Fast Binary Encoding StructHash model
14615class StructHashModel(fbe.Model):
14616 __slots__ = "_model",
14617
14618 def __init__(self, buffer=None):
14619 super().__init__(buffer)
14620 self._model = FieldModelStructHash(self.buffer, 4)
14621
14622 @property
14623 def model(self):
14624 return self._model
14625
14626 # Get the model size
14627 @property
14628 def fbe_size(self):
14629 return self._model.fbe_size + self._model.fbe_extra
14630
14631 # Get the model type
14632 @property
14633 def fbe_type(self):
14634 return self.TYPE
14635
14636 TYPE = FieldModelStructHash.TYPE
14637
14638 # Check if the struct value is valid
14639 def verify(self):
14640 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
14641 return False
14642
14643 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
14644 if fbe_full_size < self._model.fbe_size:
14645 return False
14646
14647 return self._model.verify()
14648
14649 # Create a new model (begin phase)
14650 def create_begin(self):
14651 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
14652 return fbe_begin
14653
14654 # Create a new model (end phase)
14655 def create_end(self, fbe_begin):
14656 fbe_end = self.buffer.size
14657 fbe_full_size = fbe_end - fbe_begin
14658 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
14659 return fbe_full_size
14660
14661 # Serialize the struct value
14662 def serialize(self, value):
14663 fbe_begin = self.create_begin()
14664 self._model.set(value)
14665 fbe_full_size = self.create_end(fbe_begin)
14666 return fbe_full_size
14667
14668 # Deserialize the struct value
14669 def deserialize(self, value=None):
14670 if value is None:
14671 value = StructHash()
14672

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56