| 2937 | |
| 2938 | # Fast Binary Encoding OrderMessage final model |
| 2939 | class OrderMessageFinalModel(fbe.Model): |
| 2940 | __slots__ = "_model", |
| 2941 | |
| 2942 | def __init__(self, buffer=None): |
| 2943 | super().__init__(buffer) |
| 2944 | self._model = FinalModelOrderMessage(self.buffer, 8) |
| 2945 | |
| 2946 | # Get the model type |
| 2947 | @property |
| 2948 | def fbe_type(self): |
| 2949 | return self.TYPE |
| 2950 | |
| 2951 | TYPE = FinalModelOrderMessage.TYPE |
| 2952 | |
| 2953 | # Check if the struct value is valid |
| 2954 | def verify(self): |
| 2955 | if (self.buffer.offset + self._model.fbe_offset) > self.buffer.size: |
| 2956 | return False |
| 2957 | |
| 2958 | fbe_struct_size = self.read_uint32(self._model.fbe_offset - 8) |
| 2959 | fbe_struct_type = self.read_uint32(self._model.fbe_offset - 4) |
| 2960 | if (fbe_struct_size <= 0) or (fbe_struct_type != self.fbe_type): |
| 2961 | return False |
| 2962 | |
| 2963 | return (8 + self._model.verify()) == fbe_struct_size |
| 2964 | |
| 2965 | # Serialize the struct value |
| 2966 | def serialize(self, value): |
| 2967 | fbe_initial_size = self.buffer.size |
| 2968 | |
| 2969 | fbe_struct_type = self.fbe_type |
| 2970 | fbe_struct_size = 8 + self._model.fbe_allocation_size(value) |
| 2971 | fbe_struct_offset = self.buffer.allocate(fbe_struct_size) - self.buffer.offset |
| 2972 | assert ((self.buffer.offset + fbe_struct_offset + fbe_struct_size) <= self.buffer.size), "Model is broken!" |
| 2973 | if (self.buffer.offset + fbe_struct_offset + fbe_struct_size) > self.buffer.size: |
| 2974 | return 0 |
| 2975 | |
| 2976 | fbe_struct_size = 8 + self._model.set(value) |
| 2977 | self.buffer.resize(fbe_initial_size + fbe_struct_size) |
| 2978 | |
| 2979 | self.write_uint32(self._model.fbe_offset - 8, fbe_struct_size) |
| 2980 | self.write_uint32(self._model.fbe_offset - 4, fbe_struct_type) |
| 2981 | |
| 2982 | return fbe_struct_size |
| 2983 | |
| 2984 | # Deserialize the struct value |
| 2985 | def deserialize(self, value=None): |
| 2986 | if value is None: |
| 2987 | value = OrderMessage() |
| 2988 | |
| 2989 | assert ((self.buffer.offset + self._model.fbe_offset) <= self.buffer.size), "Model is broken!" |
| 2990 | if (self.buffer.offset + self._model.fbe_offset) > self.buffer.size: |
| 2991 | return OrderMessage(), 0 |
| 2992 | |
| 2993 | fbe_struct_size = self.read_uint32(self._model.fbe_offset - 8) |
| 2994 | fbe_struct_type = self.read_uint32(self._model.fbe_offset - 4) |
| 2995 | assert ((fbe_struct_size > 0) and (fbe_struct_type == self.fbe_type)), "Model is broken!" |
| 2996 | if (fbe_struct_size <= 0) or (fbe_struct_type != self.fbe_type): |