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

Class StructHashExModel

projects/Python/proto/test.py:15350–15423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15348
15349# Fast Binary Encoding StructHashEx model
15350class StructHashExModel(fbe.Model):
15351 __slots__ = "_model",
15352
15353 def __init__(self, buffer=None):
15354 super().__init__(buffer)
15355 self._model = FieldModelStructHashEx(self.buffer, 4)
15356
15357 @property
15358 def model(self):
15359 return self._model
15360
15361 # Get the model size
15362 @property
15363 def fbe_size(self):
15364 return self._model.fbe_size + self._model.fbe_extra
15365
15366 # Get the model type
15367 @property
15368 def fbe_type(self):
15369 return self.TYPE
15370
15371 TYPE = FieldModelStructHashEx.TYPE
15372
15373 # Check if the struct value is valid
15374 def verify(self):
15375 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
15376 return False
15377
15378 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
15379 if fbe_full_size < self._model.fbe_size:
15380 return False
15381
15382 return self._model.verify()
15383
15384 # Create a new model (begin phase)
15385 def create_begin(self):
15386 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
15387 return fbe_begin
15388
15389 # Create a new model (end phase)
15390 def create_end(self, fbe_begin):
15391 fbe_end = self.buffer.size
15392 fbe_full_size = fbe_end - fbe_begin
15393 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
15394 return fbe_full_size
15395
15396 # Serialize the struct value
15397 def serialize(self, value):
15398 fbe_begin = self.create_begin()
15399 self._model.set(value)
15400 fbe_full_size = self.create_end(fbe_begin)
15401 return fbe_full_size
15402
15403 # Deserialize the struct value
15404 def deserialize(self, value=None):
15405 if value is None:
15406 value = StructHashEx()
15407

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56