*/
#include <babeltrace2/types.h>
+/* For bt_logging_level */
+#include <babeltrace2/logging.h>
+
#ifdef __cplusplus
extern "C" {
#endif
bt_self_component_class_filter *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
- const bt_value **result);
+ bt_logging_level logging_level, const bt_value **result);
typedef bt_self_component_status
(*bt_component_class_filter_accept_input_port_connection_method)(
*/
#include <babeltrace2/types.h>
+/* For bt_logging_level */
+#include <babeltrace2/logging.h>
+
#ifdef __cplusplus
extern "C" {
#endif
bt_self_component_class_sink *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level logging_level,
const bt_value **result);
typedef bt_self_component_status
*/
#include <babeltrace2/types.h>
+/* For bt_logging_level */
+#include <babeltrace2/logging.h>
+
#ifdef __cplusplus
extern "C" {
#endif
bt_self_component_class_source *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level logging_level,
const bt_value **result);
typedef bt_self_component_status
/* For bt_query_executor, bt_component_class, bt_value */
#include <babeltrace2/types.h>
+/* For bt_logging_level */
+#include <babeltrace2/logging.h>
+
#ifdef __cplusplus
extern "C" {
#endif
bt_query_executor *query_executor,
const bt_component_class *component_class,
const char *object, const bt_value *params,
- const bt_value **result);
+ bt_logging_level logging_level, const bt_value **result);
extern
bt_query_executor_status bt_query_executor_cancel(
def addr(cls):
return int(cls._cc_ptr)
- def _query_from_native(cls, query_exec_ptr, obj, params_ptr):
+ def _query_from_native(cls, query_exec_ptr, obj, params_ptr, log_level):
# this can raise, in which case the native call to
# bt_component_class_query() returns NULL
if params_ptr is not None:
query_exec_ptr)
# this can raise, but the native side checks the exception
- results = cls._query(query_exec, obj, params)
+ results = cls._query(query_exec, obj, params, log_level)
# this can raise, but the native side checks the exception
results = bt2.create_value(results)
bt_self_component_class_source *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result);
typedef bt_self_component_status
bt_self_component_class_filter *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result);
typedef bt_self_component_status
bt_self_component_class_sink *comp_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result);
typedef bt_self_component_status
const bt_component_class *component_class,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result)
{
PyObject *py_cls = NULL;
}
py_results_addr = PyObject_CallMethod(py_cls,
- "_query_from_native", "(OOO)", py_query_exec_ptr,
- py_object, py_params_ptr);
+ "_query_from_native", "(OOOi)", py_query_exec_ptr,
+ py_object, py_params_ptr, (int) log_level);
if (!py_results_addr) {
BT_LOGE("Failed to call Python class's _query_from_native() method: "
bt_self_component_class_source *self_component_class_source,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result)
{
const bt_component_class_source *component_class_source = bt_self_component_class_source_as_component_class_source(self_component_class_source);
const bt_component_class *component_class = bt_component_class_source_as_component_class_const(component_class_source);
- return bt_py3_component_class_query(component_class, query_executor, object, params, result);
+ return bt_py3_component_class_query(component_class, query_executor, object, params, log_level, result);
}
static bt_query_status
bt_self_component_class_filter *self_component_class_filter,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result)
{
const bt_component_class_filter *component_class_filter = bt_self_component_class_filter_as_component_class_filter(self_component_class_filter);
const bt_component_class *component_class = bt_component_class_filter_as_component_class_const(component_class_filter);
- return bt_py3_component_class_query(component_class, query_executor, object, params, result);
+ return bt_py3_component_class_query(component_class, query_executor, object, params, log_level, result);
}
static bt_query_status
bt_self_component_class_sink *self_component_class_sink,
const bt_query_executor *query_executor,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result)
{
const bt_component_class_sink *component_class_sink = bt_self_component_class_sink_as_component_class_sink(self_component_class_sink);
const bt_component_class *component_class = bt_component_class_sink_as_component_class_const(component_class_sink);
- return bt_py3_component_class_query(component_class, query_executor, object, params, result);
+ return bt_py3_component_class_query(component_class, query_executor, object, params, log_level, result);
}
static bt_self_message_iterator_status
bt_query_executor *query_executor,
const bt_component_class *component_class,
const char *object, const bt_value *params,
- const bt_value **OUT);
+ bt_logging_level logging_level, const bt_value **OUT);
extern
bt_query_executor_status bt_query_executor_cancel(
from bt2 import native_bt, object, utils
import bt2.component
+import bt2.logging
import bt2
assert(is_canceled >= 0)
return is_canceled > 0
- def query(self, component_class, object, params=None):
+ def query(self, component_class, object, params=None,
+ logging_level=bt2.logging.LoggingLevel.NONE):
if self.is_canceled:
raise bt2.QueryExecutorCanceled
params = bt2.create_value(params)
params_ptr = params._ptr
+ utils._check_log_level(logging_level)
cc_ptr = component_class._component_class_ptr()
status, result_ptr = native_bt.query_executor_query(self._ptr, cc_ptr,
- object, params_ptr)
+ object, params_ptr,
+ logging_level)
self._handle_status(status, 'cannot query component class')
assert(result_ptr)
return bt2.value._create_from_ptr(result_ptr)
}
static
-int query(const bt_component_class *comp_cls, const char *obj,
- const bt_value *params, const bt_value **user_result,
- const char **fail_reason)
+int query(struct bt_config *cfg, const bt_component_class *comp_cls,
+ const char *obj, const bt_value *params,
+ const bt_value **user_result, const char **fail_reason)
{
const bt_value *result = NULL;
bt_query_executor_status status;
while (true) {
status = bt_query_executor_query(the_query_executor,
- comp_cls, obj, params, &result);
+ comp_cls, obj, params, cfg->log_level, &result);
switch (status) {
case BT_QUERY_EXECUTOR_STATUS_OK:
goto ok;
goto end;
}
- ret = query(comp_cls, cfg->cmd_data.query.object->str,
+ ret = query(cfg, comp_cls, cfg->cmd_data.query.object->str,
cfg->cmd_data.query.cfg_component->params,
&results, &fail_reason);
if (ret) {
goto error;
}
- ret = query(comp_cls, "sessions", params,
+ ret = query(cfg, comp_cls, "sessions", params,
&results, &fail_reason);
if (ret) {
goto failed;
goto end;
}
- ret = query(comp_cls, "metadata-info",
+ ret = query(cfg, comp_cls, "metadata-info",
params, &results, &fail_reason);
if (ret) {
goto failed;
const bt_component_class *comp_cls =
bt_component_class_source_as_component_class_const(src_comp_cls);
- ret = query(comp_cls, "trace-info",
+ ret = query(ctx->cfg, comp_cls, "trace-info",
cfg_comp->params, &query_result,
&fail_reason);
if (ret) {
#include "lib/lib-logging.h"
#include "common/assert.h"
+#include "common/common.h"
#include "lib/assert-pre.h"
#include <babeltrace2/graph/query-executor-const.h>
#include <babeltrace2/graph/query-executor.h>
struct bt_query_executor *query_exec,
const struct bt_component_class *comp_cls,
const char *object, const struct bt_value *params,
+ bt_logging_level log_level,
const struct bt_value **user_result)
{
typedef enum bt_query_status (*method_t)(void *, const void *,
- const void *, const void *, const void *);
+ const void *, const void *, bt_logging_level, const void *);
enum bt_query_status status;
enum bt_query_executor_status exec_status;
}
BT_LIB_LOGD("Calling user's query method: "
- "query-exec-addr=%p, %![cc-]+C, object=\"%s\", %![params-]+v",
- query_exec, comp_cls, object, params);
+ "query-exec-addr=%p, %![cc-]+C, object=\"%s\", %![params-]+v, "
+ "log-level=%s",
+ query_exec, comp_cls, object, params,
+ bt_common_logging_level_string(log_level));
*user_result = NULL;
status = method((void *) comp_cls, query_exec, object, params,
- user_result);
+ log_level, user_result);
BT_LIB_LOGD("User method returned: status=%s, %![res-]+v",
bt_query_status_string(status), *user_result);
BT_ASSERT_PRE(status != BT_QUERY_STATUS_OK || *user_result,
bt_self_component_class_source *comp_class,
const bt_query_executor *query_exec,
const char *object, const bt_value *params,
+ __attribute__((unused)) bt_logging_level log_level,
const bt_value **result)
{
bt_query_status status = BT_QUERY_STATUS_OK;
bt_self_component_class_source *comp_class,
const bt_query_executor *query_exec,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result);
BT_HIDDEN
bt_query_status lttng_live_query(bt_self_component_class_source *comp_class,
const bt_query_executor *query_exec,
const char *object, const bt_value *params,
+ __attribute__((unused)) bt_logging_level log_level,
const bt_value **result)
{
bt_query_status status = BT_QUERY_STATUS_OK;
bt_self_component_class_source *comp_class,
const bt_query_executor *query_exec,
const char *object, const bt_value *params,
+ bt_logging_level log_level,
const bt_value **result);
void lttng_live_component_finalize(bt_self_component_source *component);
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise ValueError
with self.assertRaises(bt2.Error):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
return ...
with self.assertRaises(bt2.Error):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
nonlocal query_params
query_params = params
return None
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
nonlocal query_params
query_params = params
return 17.5
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
nonlocal query_params
query_params = params
return {
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
return [obj, params, 23]
self._py_comp_cls = MySink
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
nonlocal query_params
query_params = params
return {
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
nonlocal query_params
query_params = params
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise ValueError
with self.assertRaises(bt2.Error):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise bt2.InvalidQueryObject
with self.assertRaises(bt2.InvalidQueryObject):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise bt2.InvalidQueryParams
with self.assertRaises(bt2.InvalidQueryParams):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise bt2.TryAgain
with self.assertRaises(bt2.TryAgain):
pass
@classmethod
- def _query(cls, query_exec, obj, params):
+ def _query(cls, query_exec, obj, params, log_level):
raise bt2.TryAgain
query_exec = bt2.QueryExecutor()
bt_self_component_class_filter *component_class,
const bt_query_executor *query_exec,
const char *object, const bt_value *params,
+ __attribute__((unused)) bt_logging_level log_level,
const bt_value **result)
{
bt_value *res = bt_value_array_create();
BT_ASSERT(params);
ret = bt_query_executor_query(query_exec,
bt_component_class_filter_as_component_class_const(filter_comp_class),
- "get-something", params, &results);
+ "get-something", params, BT_LOGGING_LEVEL_NONE, &results);
ok(ret == 0 && results, "bt_query_executor_query() succeeds");
BT_ASSERT(bt_value_is_array(results) && bt_value_array_get_size(results) == 2);
object = bt_value_array_borrow_element_by_index_const(results, 0);