| 2773 | |
| 2774 | # Fast Binary Encoding OrderMessage model |
| 2775 | class OrderMessageModel(fbe.Model): |
| 2776 | __slots__ = "_model", |
| 2777 | |
| 2778 | def __init__(self, buffer=None): |
| 2779 | super().__init__(buffer) |
| 2780 | self._model = FieldModelOrderMessage(self.buffer, 4) |
| 2781 | |
| 2782 | @property |
| 2783 | def model(self): |
| 2784 | return self._model |
| 2785 | |
| 2786 | # Get the model size |
| 2787 | @property |
| 2788 | def fbe_size(self): |
| 2789 | return self._model.fbe_size + self._model.fbe_extra |
| 2790 | |
| 2791 | # Get the model type |
| 2792 | @property |
| 2793 | def fbe_type(self): |
| 2794 | return self.TYPE |
| 2795 | |
| 2796 | TYPE = FieldModelOrderMessage.TYPE |
| 2797 | |
| 2798 | # Check if the struct value is valid |
| 2799 | def verify(self): |
| 2800 | if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size: |
| 2801 | return False |
| 2802 | |
| 2803 | fbe_full_size = self.read_uint32(self._model.fbe_offset - 4) |
| 2804 | if fbe_full_size < self._model.fbe_size: |
| 2805 | return False |
| 2806 | |
| 2807 | return self._model.verify() |
| 2808 | |
| 2809 | # Create a new model (begin phase) |
| 2810 | def create_begin(self): |
| 2811 | fbe_begin = self.buffer.allocate(4 + self._model.fbe_size) |
| 2812 | return fbe_begin |
| 2813 | |
| 2814 | # Create a new model (end phase) |
| 2815 | def create_end(self, fbe_begin): |
| 2816 | fbe_end = self.buffer.size |
| 2817 | fbe_full_size = fbe_end - fbe_begin |
| 2818 | self.write_uint32(self._model.fbe_offset - 4, fbe_full_size) |
| 2819 | return fbe_full_size |
| 2820 | |
| 2821 | # Serialize the struct value |
| 2822 | def serialize(self, value): |
| 2823 | fbe_begin = self.create_begin() |
| 2824 | self._model.set(value) |
| 2825 | fbe_full_size = self.create_end(fbe_begin) |
| 2826 | return fbe_full_size |
| 2827 | |
| 2828 | # Deserialize the struct value |
| 2829 | def deserialize(self, value=None): |
| 2830 | if value is None: |
| 2831 | value = OrderMessage() |
| 2832 | |