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 <eeppeliteloop@gmail.com>
Change-Id: I9d642292083c3bce0b7be263242f5b23d3713735
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2281
CI-Build: Francis Deslauriers <francis.deslauriers@efficios.com>
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
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_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);
} bt_graph_run_status;
extern bt_graph_run_status bt_graph_run(bt_graph *graph);
def run(self):
status = native_bt.graph_run(self._ptr)
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)
def add_interrupter(self, interrupter):
utils._check_type(interrupter, bt2_interrupter.Interrupter)
switch (run_status) {
case BT_GRAPH_RUN_STATUS_OK:
switch (run_status) {
case BT_GRAPH_RUN_STATUS_OK:
case BT_GRAPH_RUN_STATUS_AGAIN:
if (bt_interrupter_is_set(the_interrupter)) {
BT_CLI_LOGW_APPEND_CAUSE(
case BT_GRAPH_RUN_STATUS_AGAIN:
if (bt_interrupter_is_set(the_interrupter)) {
BT_CLI_LOGW_APPEND_CAUSE(
- case BT_GRAPH_RUN_STATUS_END:
- goto end;
default:
if (bt_interrupter_is_set(the_interrupter)) {
BT_CLI_LOGW_APPEND_CAUSE(
default:
if (bt_interrupter_is_set(the_interrupter)) {
BT_CLI_LOGW_APPEND_CAUSE(
}
} while (status == BT_FUNC_STATUS_OK);
}
} 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;