X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fquery-executor.c;h=5c8e33e14af79d332c864d37bd5c0c0de15854ac;hb=68b66a256a54d32992dfefeaad11eea88b7df234;hp=2029de844cf21ef98b887c84d5afa5bc85e04aaf;hpb=d94d92ac6656fd252a5d7bb4f6c76935ba18e62e;p=babeltrace.git diff --git a/lib/graph/query-executor.c b/lib/graph/query-executor.c index 2029de84..5c8e33e1 100644 --- a/lib/graph/query-executor.c +++ b/lib/graph/query-executor.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 Philippe Proulx + * Copyright 2017-2018 Philippe Proulx * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -21,19 +21,19 @@ */ #define BT_LOG_TAG "QUERY-EXECUTOR" -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include static void bt_query_executor_destroy(struct bt_object *obj) @@ -45,7 +45,7 @@ void bt_query_executor_destroy(struct bt_object *obj) g_free(query_exec); } -struct bt_private_query_executor *bt_private_query_executor_create(void) +struct bt_query_executor *bt_query_executor_create(void) { struct bt_query_executor *query_exec; @@ -64,17 +64,17 @@ end: return (void *) query_exec; } -enum bt_query_status bt_private_query_executor_query( - struct bt_private_query_executor *priv_query_exec, - struct bt_component_class *comp_cls, - const char *object, struct bt_value *params, - struct bt_value **user_result) +enum bt_query_executor_status bt_query_executor_query( + struct bt_query_executor *query_exec, + const struct bt_component_class *comp_cls, + const char *object, const struct bt_value *params, + const struct bt_value **user_result) { - typedef enum bt_query_status (*method_t)(void *, void *, - const void *, void *, void *); + typedef enum bt_query_status (*method_t)(void *, const void *, + const void *, const void *, const void *); - struct bt_query_executor *query_exec = (void *) priv_query_exec; enum bt_query_status status; + enum bt_query_executor_status exec_status; method_t method = NULL; BT_ASSERT_PRE_NON_NULL(query_exec, "Query executor"); @@ -117,7 +117,7 @@ enum bt_query_status bt_private_query_executor_query( /* Not an error: nothing to query */ BT_LIB_LOGD("Component class has no registered query method: " "%!+C", comp_cls); - status = BT_QUERY_STATUS_UNSUPPORTED; + exec_status = BT_QUERY_EXECUTOR_STATUS_UNSUPPORTED; goto end; } @@ -125,38 +125,44 @@ enum bt_query_status bt_private_query_executor_query( "query-exec-addr=%p, %![cc-]+C, object=\"%s\", %![params-]+v", query_exec, comp_cls, object, params); *user_result = NULL; - status = method(comp_cls, query_exec, object, params, user_result); + status = method((void *) comp_cls, query_exec, object, params, + 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_EXECUTOR_CANCELED && - status != BT_QUERY_STATUS_UNSUPPORTED, - "Unexpected (illegal) returned status: status=%s", - bt_query_status_string(status)); BT_ASSERT_PRE(status != BT_QUERY_STATUS_OK || *user_result, "User method returned `BT_QUERY_STATUS_OK` without a result."); + exec_status = (int) status; if (query_exec->canceled) { BT_OBJECT_PUT_REF_AND_RESET(*user_result); - status = BT_QUERY_STATUS_EXECUTOR_CANCELED; + exec_status = BT_QUERY_EXECUTOR_STATUS_CANCELED; goto end; } end: - return status; + return exec_status; } -enum bt_query_status bt_private_query_executor_cancel( - struct bt_private_query_executor *priv_query_exec) +enum bt_query_executor_status bt_query_executor_cancel( + struct bt_query_executor *query_exec) { - struct bt_query_executor *query_exec = (void *) priv_query_exec; - BT_ASSERT_PRE_NON_NULL(query_exec, "Query executor"); query_exec->canceled = BT_TRUE; BT_LOGV("Canceled query executor: addr=%p", query_exec); - return BT_QUERY_STATUS_OK; + return BT_QUERY_EXECUTOR_STATUS_OK; } -bt_bool bt_query_executor_is_canceled(struct bt_query_executor *query_exec) +bt_bool bt_query_executor_is_canceled(const struct bt_query_executor *query_exec) { BT_ASSERT_PRE_NON_NULL(query_exec, "Query executor"); return query_exec->canceled; } + +void bt_query_executor_get_ref(const struct bt_query_executor *query_executor) +{ + bt_object_get_ref(query_executor); +} + +void bt_query_executor_put_ref(const struct bt_query_executor *query_executor) +{ + bt_object_put_ref(query_executor); +}