lib: have separate `BT_QUERY_EXECUTOR_STATUS` and `BT_QUERY_STATUS`
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 30 Nov 2018 22:15:03 +0000 (17:15 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 3 May 2019 22:19:36 +0000 (18:19 -0400)
The former is for the query executor API, the latter is returned by an
actual user-defined query method. `BT_QUERY_STATUS` does not have
"canceled" and "unsupported" entries, so we can remove those checks from
bt_private_query_executor_query() after calling the user method.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
cli/babeltrace.c
include/babeltrace/graph/private-component-class-filter.h
include/babeltrace/graph/private-component-class-sink.h
include/babeltrace/graph/private-component-class-source.h
include/babeltrace/graph/private-component-class.h
include/babeltrace/graph/private-query-executor.h
include/babeltrace/graph/query-executor-internal.h
include/babeltrace/graph/query-executor.h
lib/graph/query-executor.c

index 29a54a5846e4c9155b4571cbbae8c48b5769b68d..8a917a79ba5ec413f06ca822806a5c89e29fea6e 100644 (file)
@@ -173,7 +173,7 @@ int query(struct bt_component_class *comp_cls, const char *obj,
                const char **fail_reason)
 {
        struct bt_value *result = NULL;
-       enum bt_query_status status;
+       enum bt_query_executor_status status;
        *fail_reason = "unknown error";
        int ret = 0;
 
@@ -198,14 +198,14 @@ int query(struct bt_component_class *comp_cls, const char *obj,
                status = bt_private_query_executor_query(the_query_executor,
                        comp_cls, obj, params, &result);
                switch (status) {
-               case BT_QUERY_STATUS_OK:
+               case BT_QUERY_EXECUTOR_STATUS_OK:
                        goto ok;
-               case BT_QUERY_STATUS_AGAIN:
+               case BT_QUERY_EXECUTOR_STATUS_AGAIN:
                {
                        const uint64_t sleep_time_us = 100000;
 
                        /* Wait 100 ms and retry */
-                       BT_LOGV("Got BT_QUERY_STATUS_AGAIN: sleeping: "
+                       BT_LOGV("Got BT_QUERY_EXECUTOR_STATUS_AGAIN: sleeping: "
                                "time-us=%" PRIu64, sleep_time_us);
 
                        if (usleep(sleep_time_us)) {
@@ -223,18 +223,21 @@ int query(struct bt_component_class *comp_cls, const char *obj,
 
                        continue;
                }
-               case BT_QUERY_STATUS_EXECUTOR_CANCELED:
+               case BT_QUERY_EXECUTOR_STATUS_CANCELED:
                        *fail_reason = "canceled by user";
                        goto error;
-               case BT_QUERY_STATUS_ERROR:
+               case BT_QUERY_EXECUTOR_STATUS_ERROR:
                        goto error;
-               case BT_QUERY_STATUS_INVALID_OBJECT:
+               case BT_QUERY_EXECUTOR_STATUS_INVALID_OBJECT:
                        *fail_reason = "invalid or unknown query object";
                        goto error;
-               case BT_QUERY_STATUS_INVALID_PARAMS:
+               case BT_QUERY_EXECUTOR_STATUS_INVALID_PARAMS:
                        *fail_reason = "invalid query parameters";
                        goto error;
-               case BT_QUERY_STATUS_NOMEM:
+               case BT_QUERY_EXECUTOR_STATUS_UNSUPPORTED:
+                       *fail_reason = "unsupported action";
+                       goto error;
+               case BT_QUERY_EXECUTOR_STATUS_NOMEM:
                        *fail_reason = "not enough memory";
                        goto error;
                default:
index 3830a50c28c4fc15c272395e3d8c8f49fe915ce6..2e09c120fc0d389ab69b74e7544f5831335171d4 100644 (file)
 /* For enum bt_self_component_status */
 #include <babeltrace/graph/self-component.h>
 
-/* For enum bt_query_status */
-#include <babeltrace/graph/query-executor.h>
 
 /* For enum bt_self_notification_iterator_status */
 #include <babeltrace/graph/self-notification-iterator.h>
 
-/* For struct bt_private_component_class_query_method_return */
+/* For enum bt_query_status */
 #include <babeltrace/graph/private-component-class.h>
 
 #ifdef __cplusplus
index 9a1b7151b388d3a5cce896cd9b02d7e7b21fdf68..c347ac4757813d6d0c833f533cb2cbde89760100 100644 (file)
@@ -32,9 +32,6 @@
 #include <babeltrace/graph/self-component.h>
 
 /* For enum bt_query_status */
-#include <babeltrace/graph/query-executor.h>
-
-/* For struct bt_private_component_class_query_method_return */
 #include <babeltrace/graph/private-component-class.h>
 
 #ifdef __cplusplus
index 3238a62390d2ffa6c422f09f522a170deb8760df..c9d495b844504017cb8df3fd1a208614501b7b38 100644 (file)
 /* For enum bt_self_component_status */
 #include <babeltrace/graph/self-component.h>
 
-/* For enum bt_query_status */
-#include <babeltrace/graph/query-executor.h>
-
 /* For enum bt_self_notification_iterator_status */
 #include <babeltrace/graph/self-notification-iterator.h>
 
-/* For struct bt_private_component_class_query_method_return */
+/* For enum bt_query_status */
 #include <babeltrace/graph/private-component-class.h>
 
 #ifdef __cplusplus
index c8a7630501da83272c7fc8b89099cb078178a679..804f21e8126916dd5c0a74b2c7fbb4457d8d4719 100644 (file)
@@ -23,7 +23,7 @@
  * SOFTWARE.
  */
 
-/* For enum bt_query_status */
+/* For enum bt_query_executor_status */
 #include <babeltrace/graph/query-executor.h>
 
 #ifdef __cplusplus
@@ -33,6 +33,15 @@ extern "C" {
 struct bt_component_class;
 struct bt_private_component_class;
 
+enum bt_query_status {
+       BT_QUERY_STATUS_OK = BT_QUERY_EXECUTOR_STATUS_OK,
+       BT_QUERY_STATUS_AGAIN = BT_QUERY_EXECUTOR_STATUS_AGAIN,
+       BT_QUERY_STATUS_ERROR = BT_QUERY_EXECUTOR_STATUS_ERROR,
+       BT_QUERY_STATUS_NOMEM = BT_QUERY_EXECUTOR_STATUS_NOMEM,
+       BT_QUERY_STATUS_INVALID_OBJECT = BT_QUERY_EXECUTOR_STATUS_INVALID_OBJECT,
+       BT_QUERY_STATUS_INVALID_PARAMS = BT_QUERY_EXECUTOR_STATUS_INVALID_PARAMS,
+};
+
 static inline
 struct bt_component_class *
 bt_private_component_class_as_component_class(
index 2eeb48a3f88f62027f1e18f954ec371c998f5525..2a2058c28b27d6ae2d3ea9250ca828d6b525988c 100644 (file)
@@ -23,7 +23,7 @@
  * SOFTWARE.
  */
 
-/* For enum bt_query_status */
+/* For enum bt_query_executor_status */
 #include <babeltrace/graph/query-executor.h>
 
 #ifdef __cplusplus
@@ -46,14 +46,14 @@ extern
 struct bt_private_query_executor *bt_private_query_executor_create(void);
 
 extern
-enum bt_query_status bt_private_query_executor_query(
+enum bt_query_executor_status bt_private_query_executor_query(
                struct bt_private_query_executor *query_executor,
                struct bt_component_class *component_class,
                const char *object, struct bt_value *params,
                struct bt_value **result);
 
 extern
-enum bt_query_status bt_private_query_executor_cancel(
+enum bt_query_executor_status bt_private_query_executor_cancel(
                struct bt_private_query_executor *query_executor);
 
 #ifdef __cplusplus
index 9bf247ef552fcf68cb09105b0a153f1e816cdcbd..23bc2f40a5abb970e7abb67563ddc5e0fd7827b6 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <babeltrace/types.h>
 #include <babeltrace/object-internal.h>
+#include <babeltrace/graph/query-executor.h>
+#include <babeltrace/graph/private-component-class.h>
 
 struct bt_query_executor {
        struct bt_object base;
@@ -38,10 +40,6 @@ static inline const char *bt_query_status_string(enum bt_query_status status)
                return "BT_QUERY_STATUS_OK";
        case BT_QUERY_STATUS_AGAIN:
                return "BT_QUERY_STATUS_AGAIN";
-       case BT_QUERY_STATUS_EXECUTOR_CANCELED:
-               return "BT_QUERY_STATUS_EXECUTOR_CANCELED";
-       case BT_QUERY_STATUS_UNSUPPORTED:
-               return "BT_QUERY_STATUS_UNSUPPORTED";
        case BT_QUERY_STATUS_ERROR:
                return "BT_QUERY_STATUS_ERROR";
        case BT_QUERY_STATUS_INVALID_OBJECT:
@@ -55,4 +53,29 @@ static inline const char *bt_query_status_string(enum bt_query_status status)
        }
 };
 
+static inline const char *bt_query_executor_status_string(
+               enum bt_query_executor_status status)
+{
+       switch (status) {
+       case BT_QUERY_EXECUTOR_STATUS_OK:
+               return "BT_QUERY_EXECUTOR_STATUS_OK";
+       case BT_QUERY_EXECUTOR_STATUS_AGAIN:
+               return "BT_QUERY_EXECUTOR_STATUS_AGAIN";
+       case BT_QUERY_EXECUTOR_STATUS_CANCELED:
+               return "BT_QUERY_EXECUTOR_STATUS_CANCELED";
+       case BT_QUERY_EXECUTOR_STATUS_UNSUPPORTED:
+               return "BT_QUERY_EXECUTOR_STATUS_UNSUPPORTED";
+       case BT_QUERY_EXECUTOR_STATUS_ERROR:
+               return "BT_QUERY_EXECUTOR_STATUS_ERROR";
+       case BT_QUERY_EXECUTOR_STATUS_INVALID_OBJECT:
+               return "BT_QUERY_EXECUTOR_STATUS_INVALID_OBJECT";
+       case BT_QUERY_EXECUTOR_STATUS_INVALID_PARAMS:
+               return "BT_QUERY_EXECUTOR_STATUS_INVALID_PARAMS";
+       case BT_QUERY_EXECUTOR_STATUS_NOMEM:
+               return "BT_QUERY_EXECUTOR_STATUS_NOMEM";
+       default:
+               return "(unknown)";
+       }
+};
+
 #endif /* BABELTRACE_GRAPH_QUERY_EXECUTOR_INTERNAL_H */
index 3b81ec65c1bff7c87cb26dd280dfe7c10cb4bb50..abdb16ce02fca5872ae58004a329d6187bde8b37 100644 (file)
@@ -32,15 +32,15 @@ extern "C" {
 
 struct bt_query_executor;
 
-enum bt_query_status {
-       BT_QUERY_STATUS_OK = 0,
-       BT_QUERY_STATUS_AGAIN = 11,
-       BT_QUERY_STATUS_UNSUPPORTED = 95,
-       BT_QUERY_STATUS_EXECUTOR_CANCELED = 125,
-       BT_QUERY_STATUS_ERROR = -1,
-       BT_QUERY_STATUS_NOMEM = -12,
-       BT_QUERY_STATUS_INVALID_OBJECT = -23,
-       BT_QUERY_STATUS_INVALID_PARAMS = -24,
+enum bt_query_executor_status {
+       BT_QUERY_EXECUTOR_STATUS_OK = 0,
+       BT_QUERY_EXECUTOR_STATUS_AGAIN = 11,
+       BT_QUERY_EXECUTOR_STATUS_UNSUPPORTED = 95,
+       BT_QUERY_EXECUTOR_STATUS_CANCELED = 125,
+       BT_QUERY_EXECUTOR_STATUS_ERROR = -1,
+       BT_QUERY_EXECUTOR_STATUS_NOMEM = -12,
+       BT_QUERY_EXECUTOR_STATUS_INVALID_OBJECT = -23,
+       BT_QUERY_EXECUTOR_STATUS_INVALID_PARAMS = -24,
 };
 
 extern
index 2029de844cf21ef98b887c84d5afa5bc85e04aaf..ab2957114098614b3dca466633e9df4558ac54ef 100644 (file)
@@ -64,7 +64,7 @@ end:
        return (void *) query_exec;
 }
 
-enum bt_query_status bt_private_query_executor_query(
+enum bt_query_executor_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,
@@ -75,6 +75,7 @@ enum bt_query_status bt_private_query_executor_query(
 
        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 +118,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;
        }
 
@@ -128,23 +129,20 @@ enum bt_query_status bt_private_query_executor_query(
        status = method(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;
+               status = BT_QUERY_EXECUTOR_STATUS_CANCELED;
                goto end;
        }
 
 end:
-       return status;
+       return exec_status;
 }
 
-enum bt_query_status bt_private_query_executor_cancel(
+enum bt_query_executor_status bt_private_query_executor_cancel(
                struct bt_private_query_executor *priv_query_exec)
 {
        struct bt_query_executor *query_exec = (void *) priv_query_exec;
@@ -152,7 +150,7 @@ enum bt_query_status bt_private_query_executor_cancel(
        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)
This page took 0.032732 seconds and 4 git commands to generate.