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

Class StructMapModel

projects/Python/proto/test.py:13513–13586  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13511
13512# Fast Binary Encoding StructMap model
13513class StructMapModel(fbe.Model):
13514 __slots__ = "_model",
13515
13516 def __init__(self, buffer=None):
13517 super().__init__(buffer)
13518 self._model = FieldModelStructMap(self.buffer, 4)
13519
13520 @property
13521 def model(self):
13522 return self._model
13523
13524 # Get the model size
13525 @property
13526 def fbe_size(self):
13527 return self._model.fbe_size + self._model.fbe_extra
13528
13529 # Get the model type
13530 @property
13531 def fbe_type(self):
13532 return self.TYPE
13533
13534 TYPE = FieldModelStructMap.TYPE
13535
13536 # Check if the struct value is valid
13537 def verify(self):
13538 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
13539 return False
13540
13541 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
13542 if fbe_full_size < self._model.fbe_size:
13543 return False
13544
13545 return self._model.verify()
13546
13547 # Create a new model (begin phase)
13548 def create_begin(self):
13549 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
13550 return fbe_begin
13551
13552 # Create a new model (end phase)
13553 def create_end(self, fbe_begin):
13554 fbe_end = self.buffer.size
13555 fbe_full_size = fbe_end - fbe_begin
13556 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
13557 return fbe_full_size
13558
13559 # Serialize the struct value
13560 def serialize(self, value):
13561 fbe_begin = self.create_begin()
13562 self._model.set(value)
13563 fbe_full_size = self.create_end(fbe_begin)
13564 return fbe_full_size
13565
13566 # Deserialize the struct value
13567 def deserialize(self, value=None):
13568 if value is None:
13569 value = StructMap()
13570

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56