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);
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)
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(
}
}
break;
- case BT_GRAPH_RUN_STATUS_END:
- goto end;
default:
if (bt_interrupter_is_set(the_interrupter)) {
BT_CLI_LOGW_APPEND_CAUSE(
}
} 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: