Commit | Line | Data |
---|---|---|
0235b0db | 1 | # SPDX-License-Identifier: MIT |
f1f74173 PP |
2 | # |
3 | # Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com> | |
f1f74173 | 4 | |
6a4dbecc | 5 | from bt2 import native_bt, utils |
f1f74173 PP |
6 | import bt2 |
7 | ||
8 | ||
9 | def get_greatest_operative_mip_version( | |
10 | component_descriptors, log_level=bt2.LoggingLevel.NONE | |
11 | ): | |
12 | utils._check_log_level(log_level) | |
13 | comp_descr_set_ptr = native_bt.component_descriptor_set_create() | |
14 | ||
15 | if comp_descr_set_ptr is None: | |
16 | raise bt2._MemoryError('cannot create component descriptor set object') | |
17 | ||
18 | if len(component_descriptors) == 0: | |
19 | raise ValueError('no component descriptors') | |
20 | ||
21 | try: | |
22 | for descr in component_descriptors: | |
23 | if type(descr) is not bt2.ComponentDescriptor: | |
24 | raise TypeError("'{}' is not a component descriptor".format(descr)) | |
25 | ||
26 | base_cc_ptr = descr.component_class._bt_component_class_ptr() | |
27 | params_ptr = None | |
28 | ||
29 | if descr.params is not None: | |
30 | params_ptr = descr.params._ptr | |
31 | ||
21a9f056 | 32 | status = native_bt.bt2_component_descriptor_set_add_descriptor_with_initialize_method_data( |
f1f74173 PP |
33 | comp_descr_set_ptr, base_cc_ptr, params_ptr, descr.obj |
34 | ) | |
35 | utils._handle_func_status( | |
36 | status, 'cannot add descriptor to component descriptor set' | |
37 | ) | |
38 | ||
39 | status, version = native_bt.get_greatest_operative_mip_version( | |
40 | comp_descr_set_ptr, log_level | |
41 | ) | |
42 | ||
43 | if status == native_bt.__BT_FUNC_STATUS_NO_MATCH: | |
44 | return None | |
45 | ||
46 | utils._handle_func_status(status, 'cannot get greatest operative MIP version') | |
47 | return version | |
48 | finally: | |
49 | native_bt.component_descriptor_set_put_ref(comp_descr_set_ptr) | |
50 | ||
51 | ||
52 | def get_maximal_mip_version(): | |
53 | return native_bt.get_maximal_mip_version() |