-# The MIT License (MIT)
+# SPDX-License-Identifier: MIT
#
# Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-from bt2 import native_bt, object, utils
-from bt2 import interrupter as bt2_interrupter
-from bt2 import component as bt2_component
-from bt2 import logging as bt2_logging
+
+from bt2 import error as bt2_error
+from bt2 import utils as bt2_utils
from bt2 import value as bt2_value
-import bt2
+from bt2 import object as bt2_object
+from bt2 import native_bt
+from bt2 import interrupter as bt2_interrupter
+
+
+def _bt2_component():
+ from bt2 import component as bt2_component
+
+ return bt2_component
class _QueryExecutorCommon:
return native_bt.query_executor_get_logging_level(self._common_ptr)
-class QueryExecutor(object._SharedObject, _QueryExecutorCommon):
- _get_ref = staticmethod(native_bt.query_executor_get_ref)
- _put_ref = staticmethod(native_bt.query_executor_put_ref)
+class QueryExecutor(bt2_object._SharedObject, _QueryExecutorCommon):
+ @staticmethod
+ def _get_ref(ptr):
+ native_bt.query_executor_get_ref(ptr)
+
+ @staticmethod
+ def _put_ref(ptr):
+ native_bt.query_executor_put_ref(ptr)
def _as_query_executor_ptr(self):
return self._ptr
- def __init__(self, component_class, object, params=None, method_obj=None):
- if not isinstance(component_class, bt2_component._ComponentClass):
+ def __init__(self, component_class, object_name, params=None, method_obj=None):
+ if not isinstance(component_class, _bt2_component()._ComponentClassConst):
err = False
try:
- if not issubclass(component_class, bt2_component._UserComponent):
+ if not issubclass(component_class, _bt2_component()._UserComponent):
err = True
except TypeError:
err = True
o = component_class
raise TypeError("'{}' is not a component class object".format(o))
- utils._check_str(object)
+ bt2_utils._check_str(object_name)
if params is None:
params_ptr = native_bt.value_null
else:
- params = bt2.create_value(params)
+ params = bt2_value.create_value(params)
params_ptr = params._ptr
cc_ptr = component_class._bt_component_class_ptr()
cc_ptr
):
raise ValueError(
- 'cannot pass a Python object to a non-Python component class'
+ "cannot pass a Python object to a non-Python component class"
)
ptr = native_bt.bt2_query_executor_create(
- cc_ptr, object, params_ptr, method_obj
+ cc_ptr, object_name, params_ptr, method_obj
)
if ptr is None:
- raise bt2._MemoryError('cannot create query executor object')
+ raise bt2_error._MemoryError("cannot create query executor object")
super().__init__(ptr)
self._method_obj = method_obj
def add_interrupter(self, interrupter):
- utils._check_type(interrupter, bt2_interrupter.Interrupter)
+ bt2_utils._check_type(interrupter, bt2_interrupter.Interrupter)
native_bt.query_executor_add_interrupter(self._ptr, interrupter._ptr)
- def interrupt(self):
- native_bt.query_executor_interrupt(self._ptr)
+ @property
+ def default_interrupter(self):
+ ptr = native_bt.query_executor_borrow_default_interrupter(self._ptr)
+ return bt2_interrupter.Interrupter._create_from_ptr_and_get_ref(ptr)
def _set_logging_level(self, log_level):
- utils._check_log_level(log_level)
+ bt2_utils._check_log_level(log_level)
status = native_bt.query_executor_set_logging_level(self._ptr, log_level)
- utils._handle_func_status(status, "cannot set query executor's logging level")
+ bt2_utils._handle_func_status(
+ status, "cannot set query executor's logging level"
+ )
logging_level = property(
fget=_QueryExecutorCommon.logging_level, fset=_set_logging_level
def query(self):
status, result_ptr = native_bt.query_executor_query(self._ptr)
- utils._handle_func_status(status, 'cannot query component class')
+ bt2_utils._handle_func_status(status, "cannot query component class")
assert result_ptr is not None
- return bt2_value._create_from_ptr(result_ptr)
+ return bt2_value._create_from_const_ptr(result_ptr)
class _PrivateQueryExecutor(_QueryExecutorCommon):
def _check_validity(self):
if self._ptr is None:
- raise RuntimeError('this object is not valid anymore')
+ raise RuntimeError("this object is not valid anymore")
def _as_query_executor_ptr(self):
self._check_validity()