| 2656 | |
| 2657 | # Fast Binary Encoding OrderMessage model |
| 2658 | class OrderMessageModel(fbe.Model): |
| 2659 | __slots__ = "_model", |
| 2660 | |
| 2661 | def __init__(self, buffer=None): |
| 2662 | super().__init__(buffer) |
| 2663 | self._model = FieldModelOrderMessage(self.buffer, 4) |
| 2664 | |
| 2665 | @property |
| 2666 | def model(self): |
| 2667 | return self._model |
| 2668 | |
| 2669 | # Get the model size |
| 2670 | @property |
| 2671 | def fbe_size(self): |
| 2672 | return self._model.fbe_size + self._model.fbe_extra |
| 2673 | |
| 2674 | # Get the model type |
| 2675 | @property |
| 2676 | def fbe_type(self): |
| 2677 | return self.TYPE |
| 2678 | |
| 2679 | TYPE = FieldModelOrderMessage.TYPE |
| 2680 | |
| 2681 | # Check if the struct value is valid |
| 2682 | def verify(self): |
| 2683 | if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size: |
| 2684 | return False |
| 2685 | |
| 2686 | fbe_full_size = self.read_uint32(self._model.fbe_offset - 4) |
| 2687 | if fbe_full_size < self._model.fbe_size: |
| 2688 | return False |
| 2689 | |
| 2690 | return self._model.verify() |
| 2691 | |
| 2692 | # Create a new model (begin phase) |
| 2693 | def create_begin(self): |
| 2694 | fbe_begin = self.buffer.allocate(4 + self._model.fbe_size) |
| 2695 | return fbe_begin |
| 2696 | |
| 2697 | # Create a new model (end phase) |
| 2698 | def create_end(self, fbe_begin): |
| 2699 | fbe_end = self.buffer.size |
| 2700 | fbe_full_size = fbe_end - fbe_begin |
| 2701 | self.write_uint32(self._model.fbe_offset - 4, fbe_full_size) |
| 2702 | return fbe_full_size |
| 2703 | |
| 2704 | # Serialize the struct value |
| 2705 | def serialize(self, value): |
| 2706 | fbe_begin = self.create_begin() |
| 2707 | self._model.set(value) |
| 2708 | fbe_full_size = self.create_end(fbe_begin) |
| 2709 | return fbe_full_size |
| 2710 | |
| 2711 | # Deserialize the struct value |
| 2712 | def deserialize(self, value=None): |
| 2713 | if value is None: |
| 2714 | value = OrderMessage() |
| 2715 | |