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

Class AccountModel

projects/Python/proto/proto.py:2059–2132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2057
2058# Fast Binary Encoding Account model
2059class AccountModel(fbe.Model):
2060 __slots__ = "_model",
2061
2062 def __init__(self, buffer=None):
2063 super().__init__(buffer)
2064 self._model = FieldModelAccount(self.buffer, 4)
2065
2066 @property
2067 def model(self):
2068 return self._model
2069
2070 # Get the model size
2071 @property
2072 def fbe_size(self):
2073 return self._model.fbe_size + self._model.fbe_extra
2074
2075 # Get the model type
2076 @property
2077 def fbe_type(self):
2078 return self.TYPE
2079
2080 TYPE = FieldModelAccount.TYPE
2081
2082 # Check if the struct value is valid
2083 def verify(self):
2084 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
2085 return False
2086
2087 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
2088 if fbe_full_size < self._model.fbe_size:
2089 return False
2090
2091 return self._model.verify()
2092
2093 # Create a new model (begin phase)
2094 def create_begin(self):
2095 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
2096 return fbe_begin
2097
2098 # Create a new model (end phase)
2099 def create_end(self, fbe_begin):
2100 fbe_end = self.buffer.size
2101 fbe_full_size = fbe_end - fbe_begin
2102 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
2103 return fbe_full_size
2104
2105 # Serialize the struct value
2106 def serialize(self, value):
2107 fbe_begin = self.create_begin()
2108 self._model.set(value)
2109 fbe_full_size = self.create_end(fbe_begin)
2110 return fbe_full_size
2111
2112 # Deserialize the struct value
2113 def deserialize(self, value=None):
2114 if value is None:
2115 value = Account()
2116

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected