from bt2 import trace_class as bt2_trace_class
from bt2 import clock_class as bt2_clock_class
from bt2 import query_executor as bt2_query_executor
-import traceback
from bt2 import port as bt2_port
import sys
import bt2
-import os
# This class wraps a component class pointer. This component class could
def addr(cls):
return int(cls._bt_cc_ptr)
- def _bt_query_from_native(cls, priv_query_exec_ptr, obj, params_ptr):
- # this can raise, in which case the native call to
- # bt_component_class_query() returns NULL
+ def _bt_get_supported_mip_versions_from_native(cls, params_ptr, obj, log_level):
+ # this can raise, but the native side checks the exception
+ if params_ptr is not None:
+ params = bt2_value._create_from_ptr_and_get_ref(params_ptr)
+ else:
+ params = None
+
+ # this can raise, but the native side checks the exception
+ range_set = cls._user_get_supported_mip_versions(params, obj, log_level)
+
+ if type(range_set) is not bt2.UnsignedIntegerRangeSet:
+ # this can raise, but the native side checks the exception
+ range_set = bt2.UnsignedIntegerRangeSet(range_set)
+
+ # return new reference
+ range_set._get_ref(range_set._ptr)
+ return int(range_set._ptr)
+
+ def _user_get_supported_mip_versions(cls, params, obj, log_level):
+ return [0]
+
+ def _bt_query_from_native(cls, priv_query_exec_ptr, object, params_ptr, method_obj):
+ # this can raise, but the native side checks the exception
if params_ptr is not None:
params = bt2_value._create_from_ptr_and_get_ref(params_ptr)
else:
try:
# this can raise, but the native side checks the exception
- results = cls._user_query(priv_query_exec, obj, params)
+ results = cls._user_query(priv_query_exec, object, params, method_obj)
finally:
# the private query executor is a private view on the query
# executor; it's not a shared object (the library does not
bt2_value._Value._get_ref(results_ptr)
return int(results_ptr)
- def _user_query(cls, priv_query_executor, obj, params):
+ def _user_query(cls, priv_query_executor, object, params, method_obj):
raise bt2.UnknownObject
def _bt_component_class_ptr(self):
def addr(self):
return int(self._bt_ptr)
+ @property
+ def _graph_mip_version(self):
+ ptr = self._bt_as_self_component_ptr(self._bt_ptr)
+ return native_bt.self_component_get_graph_mip_version(ptr)
+
def __init__(self, params=None, obj=None):
pass
)
self._user_port_connected(port, other_port)
- def _create_trace_class(self, assigns_automatic_stream_class_id=True):
+ def _create_trace_class(
+ self, user_attributes=None, assigns_automatic_stream_class_id=True
+ ):
ptr = self._bt_as_self_component_ptr(self._bt_ptr)
tc_ptr = native_bt.trace_class_create(ptr)
tc = bt2_trace_class._TraceClass._create_from_ptr(tc_ptr)
tc._assigns_automatic_stream_class_id = assigns_automatic_stream_class_id
+ if user_attributes is not None:
+ tc._user_attributes = user_attributes
+
return tc
def _create_clock_class(
self,
frequency=None,
name=None,
+ user_attributes=None,
description=None,
precision=None,
offset=None,
if name is not None:
cc._name = name
+ if user_attributes is not None:
+ cc._user_attributes = user_attributes
+
if description is not None:
cc._description = description
def _create_input_port_message_iterator(self, input_port):
utils._check_type(input_port, bt2_port._UserComponentInputPort)
- msg_iter_ptr = native_bt.self_component_port_input_message_iterator_create_from_sink_component(
+ status, msg_iter_ptr = native_bt.bt2_self_component_port_input_message_iterator_create_from_sink_component(
self._bt_ptr, input_port._ptr
)
-
- if msg_iter_ptr is None:
- raise bt2.CreationError('cannot create message iterator object')
+ utils._handle_func_status(status, 'cannot create message iterator object')
+ assert msg_iter_ptr is not None
return bt2_message_iterator._UserComponentInputPortMessageIterator(msg_iter_ptr)