| 2820 | |
| 2821 | # Fast Binary Encoding OrderMessage final model |
| 2822 | class OrderMessageFinalModel(fbe.Model): |
| 2823 | __slots__ = "_model", |
| 2824 | |
| 2825 | def __init__(self, buffer=None): |
| 2826 | super().__init__(buffer) |
| 2827 | self._model = FinalModelOrderMessage(self.buffer, 8) |
| 2828 | |
| 2829 | # Get the model type |
| 2830 | @property |
| 2831 | def fbe_type(self): |
| 2832 | return self.TYPE |
| 2833 | |
| 2834 | TYPE = FinalModelOrderMessage.TYPE |
| 2835 | |
| 2836 | # Check if the struct value is valid |
| 2837 | def verify(self): |
| 2838 | if (self.buffer.offset + self._model.fbe_offset) > self.buffer.size: |
| 2839 | return False |
| 2840 | |
| 2841 | fbe_struct_size = self.read_uint32(self._model.fbe_offset - 8) |
| 2842 | fbe_struct_type = self.read_uint32(self._model.fbe_offset - 4) |
| 2843 | if (fbe_struct_size <= 0) or (fbe_struct_type != self.fbe_type): |
| 2844 | return False |
| 2845 | |
| 2846 | return (8 + self._model.verify()) == fbe_struct_size |
| 2847 | |
| 2848 | # Serialize the struct value |
| 2849 | def serialize(self, value): |
| 2850 | fbe_initial_size = self.buffer.size |
| 2851 | |
| 2852 | fbe_struct_type = self.fbe_type |
| 2853 | fbe_struct_size = 8 + self._model.fbe_allocation_size(value) |
| 2854 | fbe_struct_offset = self.buffer.allocate(fbe_struct_size) - self.buffer.offset |
| 2855 | assert ((self.buffer.offset + fbe_struct_offset + fbe_struct_size) <= self.buffer.size), "Model is broken!" |
| 2856 | if (self.buffer.offset + fbe_struct_offset + fbe_struct_size) > self.buffer.size: |
| 2857 | return 0 |
| 2858 | |
| 2859 | fbe_struct_size = 8 + self._model.set(value) |
| 2860 | self.buffer.resize(fbe_initial_size + fbe_struct_size) |
| 2861 | |
| 2862 | self.write_uint32(self._model.fbe_offset - 8, fbe_struct_size) |
| 2863 | self.write_uint32(self._model.fbe_offset - 4, fbe_struct_type) |
| 2864 | |
| 2865 | return fbe_struct_size |
| 2866 | |
| 2867 | # Deserialize the struct value |
| 2868 | def deserialize(self, value=None): |
| 2869 | if value is None: |
| 2870 | value = OrderMessage() |
| 2871 | |
| 2872 | assert ((self.buffer.offset + self._model.fbe_offset) <= self.buffer.size), "Model is broken!" |
| 2873 | if (self.buffer.offset + self._model.fbe_offset) > self.buffer.size: |
| 2874 | return OrderMessage(), 0 |
| 2875 | |
| 2876 | fbe_struct_size = self.read_uint32(self._model.fbe_offset - 8) |
| 2877 | fbe_struct_type = self.read_uint32(self._model.fbe_offset - 4) |
| 2878 | assert ((fbe_struct_size > 0) and (fbe_struct_type == self.fbe_type)), "Model is broken!" |
| 2879 | if (fbe_struct_size <= 0) or (fbe_struct_type != self.fbe_type): |