+
+ if ptr is None:
+ raise bt2._MemoryError('cannot create query executor object')
+
+ super().__init__(ptr)
+
+ # Keep a reference of `method_obj` as the native query executor
+ # does not have any. This ensures that, when this object's
+ # query() method is called, the Python object still exists.
+ self._method_obj = method_obj
+
+ def add_interrupter(self, interrupter):
+ utils._check_type(interrupter, bt2_interrupter.Interrupter)
+ native_bt.query_executor_add_interrupter(self._ptr, interrupter._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)
+ status = native_bt.query_executor_set_logging_level(self._ptr, log_level)
+ utils._handle_func_status(status, "cannot set query executor's logging level")
+
+ logging_level = property(
+ fget=_QueryExecutorCommon.logging_level, fset=_set_logging_level
+ )
+
+ @property
+ def is_interrupted(self):
+ is_interrupted = native_bt.query_executor_is_interrupted(self._ptr)
+ return bool(is_interrupted)
+
+ def query(self):
+ status, result_ptr = native_bt.query_executor_query(self._ptr)