| 3626 | |
| 3627 | # Fast Binary Encoding AccountMessage model |
| 3628 | class AccountMessageModel(fbe.Model): |
| 3629 | __slots__ = "_model", |
| 3630 | |
| 3631 | def __init__(self, buffer=None): |
| 3632 | super().__init__(buffer) |
| 3633 | self._model = FieldModelAccountMessage(self.buffer, 4) |
| 3634 | |
| 3635 | @property |
| 3636 | def model(self): |
| 3637 | return self._model |
| 3638 | |
| 3639 | # Get the model size |
| 3640 | @property |
| 3641 | def fbe_size(self): |
| 3642 | return self._model.fbe_size + self._model.fbe_extra |
| 3643 | |
| 3644 | # Get the model type |
| 3645 | @property |
| 3646 | def fbe_type(self): |
| 3647 | return self.TYPE |
| 3648 | |
| 3649 | TYPE = FieldModelAccountMessage.TYPE |
| 3650 | |
| 3651 | # Check if the struct value is valid |
| 3652 | def verify(self): |
| 3653 | if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size: |
| 3654 | return False |
| 3655 | |
| 3656 | fbe_full_size = self.read_uint32(self._model.fbe_offset - 4) |
| 3657 | if fbe_full_size < self._model.fbe_size: |
| 3658 | return False |
| 3659 | |
| 3660 | return self._model.verify() |
| 3661 | |
| 3662 | # Create a new model (begin phase) |
| 3663 | def create_begin(self): |
| 3664 | fbe_begin = self.buffer.allocate(4 + self._model.fbe_size) |
| 3665 | return fbe_begin |
| 3666 | |
| 3667 | # Create a new model (end phase) |
| 3668 | def create_end(self, fbe_begin): |
| 3669 | fbe_end = self.buffer.size |
| 3670 | fbe_full_size = fbe_end - fbe_begin |
| 3671 | self.write_uint32(self._model.fbe_offset - 4, fbe_full_size) |
| 3672 | return fbe_full_size |
| 3673 | |
| 3674 | # Serialize the struct value |
| 3675 | def serialize(self, value): |
| 3676 | fbe_begin = self.create_begin() |
| 3677 | self._model.set(value) |
| 3678 | fbe_full_size = self.create_end(fbe_begin) |
| 3679 | return fbe_full_size |
| 3680 | |
| 3681 | # Deserialize the struct value |
| 3682 | def deserialize(self, value=None): |
| 3683 | if value is None: |
| 3684 | value = AccountMessage() |
| 3685 | |