X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bindings%2Fpython%2Fbt2%2Fbt2%2Fpacket.py;h=afba27429d8fa4450cff34a2c2cec89e69b573d4;hb=be7bbff934d18e407853436dd9f7da23c8c20743;hp=84302fa00c1c6e62b078f32a183898e656be4295;hpb=50842bdc4c21f3de2b63e29cdac730af8b6dcca6;p=babeltrace.git diff --git a/bindings/python/bt2/bt2/packet.py b/bindings/python/bt2/bt2/packet.py index 84302fa0..afba2742 100644 --- a/bindings/python/bt2/bt2/packet.py +++ b/bindings/python/bt2/bt2/packet.py @@ -21,19 +21,22 @@ # THE SOFTWARE. from bt2 import native_bt, object, utils -import bt2.fields +import bt2.field import bt2.stream import copy import abc import bt2 -class _Packet(object._Object): +class _Packet(object._SharedObject): + _get_ref = staticmethod(native_bt.packet_get_ref) + _put_ref = staticmethod(native_bt.packet_put_ref) + @property def stream(self): - stream_ptr = native_bt.packet_get_stream(self._ptr) - assert(stream_ptr) - return bt2.stream._Stream._create_from_ptr(stream_ptr) + stream_ptr = native_bt.packet_borrow_stream(self._ptr) + assert stream_ptr is not None + return bt2.stream._Stream._create_from_ptr_and_get_ref(stream_ptr) @property def header_field(self): @@ -42,14 +45,14 @@ class _Packet(object._Object): if field_ptr is None: return - return bt2.fields._create_from_ptr(field_ptr) + return bt2.field._create_from_ptr(field_ptr) @header_field.setter def header_field(self, header_field): header_field_ptr = None if header_field is not None: - utils._check_type(header_field, bt2.fields._Field) + utils._check_type(header_field, bt2.field._Field) header_field_ptr = header_field._ptr ret = native_bt.packet_set_header(self._ptr, header_field_ptr) @@ -57,19 +60,22 @@ class _Packet(object._Object): @property def context_field(self): - field_ptr = native_bt.packet_get_context(self._ptr) + field_ptr = native_bt.packet_borrow_context_field(self._ptr) if field_ptr is None: return - return bt2.fields._create_from_ptr(field_ptr) + return bt2.field._create_field_from_ptr(field_ptr, self._ptr, + self._get_ref, + self._put_ref) + @context_field.setter def context_field(self, context_field): context_field_ptr = None if context_field is not None: - utils._check_type(context_field, bt2.fields._Field) + utils._check_type(context_field, bt2.field._Field) context_field_ptr = context_field._ptr ret = native_bt.packet_set_context(self._ptr, context_field_ptr)