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

Class StructSimpleModel

projects/Python/proto/test.py:2206–2279  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2204
2205# Fast Binary Encoding StructSimple model
2206class StructSimpleModel(fbe.Model):
2207 __slots__ = "_model",
2208
2209 def __init__(self, buffer=None):
2210 super().__init__(buffer)
2211 self._model = FieldModelStructSimple(self.buffer, 4)
2212
2213 @property
2214 def model(self):
2215 return self._model
2216
2217 # Get the model size
2218 @property
2219 def fbe_size(self):
2220 return self._model.fbe_size + self._model.fbe_extra
2221
2222 # Get the model type
2223 @property
2224 def fbe_type(self):
2225 return self.TYPE
2226
2227 TYPE = FieldModelStructSimple.TYPE
2228
2229 # Check if the struct value is valid
2230 def verify(self):
2231 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
2232 return False
2233
2234 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
2235 if fbe_full_size < self._model.fbe_size:
2236 return False
2237
2238 return self._model.verify()
2239
2240 # Create a new model (begin phase)
2241 def create_begin(self):
2242 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
2243 return fbe_begin
2244
2245 # Create a new model (end phase)
2246 def create_end(self, fbe_begin):
2247 fbe_end = self.buffer.size
2248 fbe_full_size = fbe_end - fbe_begin
2249 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
2250 return fbe_full_size
2251
2252 # Serialize the struct value
2253 def serialize(self, value):
2254 fbe_begin = self.create_begin()
2255 self._model.set(value)
2256 fbe_full_size = self.create_end(fbe_begin)
2257 return fbe_full_size
2258
2259 # Deserialize the struct value
2260 def deserialize(self, value=None):
2261 if value is None:
2262 value = StructSimple()
2263

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56