9325a7d6fc29cbb0168c9651761d72f1fa2d0642
[babeltrace.git] / src / bindings / python / bt2 / bt2 / packet.py
1 # SPDX-License-Identifier: MIT
2 #
3 # Copyright (c) 2016-2017 Philippe Proulx <pproulx@efficios.com>
4
5 from bt2 import native_bt, object
6 from bt2 import field as bt2_field
7
8
9 def _bt2_stream():
10 from bt2 import stream as bt2_stream
11
12 return bt2_stream
13
14
15 class _PacketConst(object._SharedObject):
16 _get_ref = staticmethod(native_bt.packet_get_ref)
17 _put_ref = staticmethod(native_bt.packet_put_ref)
18 _borrow_stream_ptr = staticmethod(native_bt.packet_borrow_stream_const)
19 _borrow_context_field_ptr = staticmethod(
20 native_bt.packet_borrow_context_field_const
21 )
22 _stream_pycls = property(lambda _: _bt2_stream()._StreamConst)
23 _create_field_from_ptr = staticmethod(bt2_field._create_field_from_const_ptr)
24
25 @property
26 def stream(self):
27 stream_ptr = self._borrow_stream_ptr(self._ptr)
28 assert stream_ptr is not None
29 return self._stream_pycls._create_from_ptr_and_get_ref(stream_ptr)
30
31 @property
32 def context_field(self):
33 field_ptr = self._borrow_context_field_ptr(self._ptr)
34
35 if field_ptr is None:
36 return
37
38 return self._create_field_from_ptr(
39 field_ptr, self._ptr, self._get_ref, self._put_ref
40 )
41
42
43 class _Packet(_PacketConst):
44 _borrow_stream_ptr = staticmethod(native_bt.packet_borrow_stream)
45 _borrow_context_field_ptr = staticmethod(native_bt.packet_borrow_context_field)
46 _stream_pycls = property(lambda _: _bt2_stream()._Stream)
47 _create_field_from_ptr = staticmethod(bt2_field._create_field_from_ptr)
This page took 0.029967 seconds and 4 git commands to generate.