From 0e312dbd81e160ef2e17020391b118ea1db676b2 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Tue, 29 Oct 2019 11:29:12 -0400 Subject: [PATCH] lib: remove `BT_GRAPH_RUN_STATUS_END` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch makes bt_graph_run() return `BT_GRAPH_RUN_STATUS_OK` when the graph is done running instead of `BT_GRAPH_RUN_STATUS_END`, as one of them is redundant here and keeping an OK status looks like the right decision. bt_graph_run_once() is different: it returns `BT_GRAPH_RUN_ONCE_STATUS_OK` once it's done running a single time, and eventually `BT_GRAPH_RUN_ONCE_STATUS_END` when all the sink components are ended. In bt2.Graph.run(), the special case for `bt2.Stop` is removed as `status` is never `BT_GRAPH_RUN_STATUS_END`. Signed-off-by: Philippe Proulx Change-Id: I9d642292083c3bce0b7be263242f5b23d3713735 Reviewed-on: https://review.lttng.org/c/babeltrace/+/2281 CI-Build: Francis Deslauriers Tested-by: jenkins Reviewed-by: Simon Marchi Reviewed-by: Jérémie Galarneau Reviewed-by: Francis Deslauriers --- include/babeltrace2/graph/graph.h | 1 - src/bindings/python/bt2/bt2/graph.py | 9 +-------- src/cli/babeltrace2.c | 4 +--- src/lib/graph/graph.c | 11 +++++++++-- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/include/babeltrace2/graph/graph.h b/include/babeltrace2/graph/graph.h index 9ef943d7..e4d53e6e 100644 --- a/include/babeltrace2/graph/graph.h +++ b/include/babeltrace2/graph/graph.h @@ -191,7 +191,6 @@ typedef enum bt_graph_run_status { BT_GRAPH_RUN_STATUS_ERROR = __BT_FUNC_STATUS_ERROR, BT_GRAPH_RUN_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, BT_GRAPH_RUN_STATUS_AGAIN = __BT_FUNC_STATUS_AGAIN, - BT_GRAPH_RUN_STATUS_END = __BT_FUNC_STATUS_END, } bt_graph_run_status; extern bt_graph_run_status bt_graph_run(bt_graph *graph); diff --git a/src/bindings/python/bt2/bt2/graph.py b/src/bindings/python/bt2/bt2/graph.py index ef40014b..a36c85d1 100644 --- a/src/bindings/python/bt2/bt2/graph.py +++ b/src/bindings/python/bt2/bt2/graph.py @@ -189,14 +189,7 @@ class Graph(object._SharedObject): def run(self): status = native_bt.graph_run(self._ptr) - - try: - utils._handle_func_status(status, 'graph object stopped running') - except bt2.Stop: - # done - return - except Exception: - raise + utils._handle_func_status(status, 'graph object stopped running') def add_interrupter(self, interrupter): utils._check_type(interrupter, bt2_interrupter.Interrupter) diff --git a/src/cli/babeltrace2.c b/src/cli/babeltrace2.c index 150b08fc..e721ea3b 100644 --- a/src/cli/babeltrace2.c +++ b/src/cli/babeltrace2.c @@ -2536,7 +2536,7 @@ int cmd_run(struct bt_config *cfg) switch (run_status) { case BT_GRAPH_RUN_STATUS_OK: - break; + goto end; case BT_GRAPH_RUN_STATUS_AGAIN: if (bt_interrupter_is_set(the_interrupter)) { BT_CLI_LOGW_APPEND_CAUSE( @@ -2558,8 +2558,6 @@ int cmd_run(struct bt_config *cfg) } } break; - case BT_GRAPH_RUN_STATUS_END: - goto end; default: if (bt_interrupter_is_set(the_interrupter)) { BT_CLI_LOGW_APPEND_CAUSE( diff --git a/src/lib/graph/graph.c b/src/lib/graph/graph.c index 44a5e1b4..ed66ba89 100644 --- a/src/lib/graph/graph.c +++ b/src/lib/graph/graph.c @@ -773,8 +773,15 @@ enum bt_graph_run_status bt_graph_run(struct bt_graph *graph) } } while (status == BT_FUNC_STATUS_OK); - if (g_queue_is_empty(graph->sinks_to_consume)) { - status = BT_FUNC_STATUS_END; + if (status == BT_FUNC_STATUS_END) { + /* + * The last call to consume_no_check() returned + * `BT_FUNC_STATUS_END`, but bt_graph_run() has no + * `BT_GRAPH_RUN_STATUS_END` status: replace with + * `BT_GRAPH_RUN_STATUS_OK` (success: graph ran + * completely). + */ + status = BT_FUNC_STATUS_OK; } end: -- 2.34.1