@@ 89-115 (lines=27) @@ | ||
86 | type(self).__name__) |
|
87 | raise PackException(msg) |
|
88 | ||
89 | def unpack(self, buff, offset=0): |
|
90 | """Unpack a binary message into this object's attributes. |
|
91 | ||
92 | Unpack the binary value *buff* and update this object attributes based |
|
93 | on the results. It is an inplace method and it receives the binary data |
|
94 | of the message **without the header**. |
|
95 | ||
96 | This class' unpack method is like the :meth:`.GenericMessage.unpack` |
|
97 | one, except for the ``actions`` attribute which has a length determined |
|
98 | by the ``actions_len`` attribute. |
|
99 | ||
100 | Args: |
|
101 | buff (bytes): Binary data package to be unpacked, without the |
|
102 | header. |
|
103 | offset (int): Where to begin unpacking. |
|
104 | """ |
|
105 | begin = offset |
|
106 | for attribute_name, class_attribute in self.get_class_attributes(): |
|
107 | if type(class_attribute).__name__ != "Header": |
|
108 | attribute = deepcopy(class_attribute) |
|
109 | if attribute_name == 'actions': |
|
110 | length = self.actions_len.value |
|
111 | attribute.unpack(buff[begin:begin+length]) |
|
112 | else: |
|
113 | attribute.unpack(buff, begin) |
|
114 | setattr(self, attribute_name, attribute) |
|
115 | begin += attribute.get_size() |
|
116 | ||
117 | def _update_actions_len(self): |
|
118 | """Update the actions_len field based on actions value.""" |
@@ 79-105 (lines=27) @@ | ||
76 | type(self).__name__) |
|
77 | raise PackException(msg) |
|
78 | ||
79 | def unpack(self, buff, offset=0): |
|
80 | """Unpack a binary message into this object's attributes. |
|
81 | ||
82 | Unpack the binary value *buff* and update this object attributes based |
|
83 | on the results. It is an inplace method and it receives the binary data |
|
84 | of the message **without the header**. |
|
85 | ||
86 | This class' unpack method is like the :meth:`.GenericMessage.unpack` |
|
87 | one, except for the ``actions`` attribute which has a length determined |
|
88 | by the ``actions_len`` attribute. |
|
89 | ||
90 | Args: |
|
91 | buff (bytes): Binary data package to be unpacked, without the |
|
92 | header. |
|
93 | offset (int): Where to begin unpacking. |
|
94 | """ |
|
95 | begin = offset |
|
96 | for attribute_name, class_attribute in self.get_class_attributes(): |
|
97 | if type(class_attribute).__name__ != "Header": |
|
98 | attribute = deepcopy(class_attribute) |
|
99 | if attribute_name == 'actions': |
|
100 | length = self.actions_len.value |
|
101 | attribute.unpack(buff[begin:begin+length]) |
|
102 | else: |
|
103 | attribute.unpack(buff, begin) |
|
104 | setattr(self, attribute_name, attribute) |
|
105 | begin += attribute.get_size() |
|
106 | ||
107 | def _update_actions_len(self): |
|
108 | """Update the actions_len field based on actions value.""" |