Always evaluate BT_ASSERT(); add BT_ASSERT_DBG() for debug mode only
[babeltrace.git] / src / lib / graph / graph.h
index 74c794707206e6770fa12f616ead62c74e3bfa9e..5fe6cb69fa0eb02c56e42f46f05e740be8525950 100644 (file)
@@ -67,6 +67,7 @@ enum bt_graph_configuration_state {
        BT_GRAPH_CONFIGURATION_STATE_PARTIALLY_CONFIGURED,
        BT_GRAPH_CONFIGURATION_STATE_CONFIGURED,
        BT_GRAPH_CONFIGURATION_STATE_FAULTY,
+       BT_GRAPH_CONFIGURATION_STATE_DESTROYING,
 };
 
 struct bt_graph {
@@ -89,7 +90,21 @@ struct bt_graph {
        /* Queue of pointers (weak references) to sink bt_components. */
        GQueue *sinks_to_consume;
 
-       bool canceled;
+       uint64_t mip_version;
+
+       /*
+        * Array of `struct bt_interrupter *`, each one owned by this.
+        * If any interrupter is set, then this graph is deemed
+        * interrupted.
+        */
+       GPtrArray *interrupters;
+
+       /*
+        * Default interrupter to support bt_graph_interrupt(); owned
+        * by this.
+        */
+       struct bt_interrupter *default_interrupter;
+
        bool in_remove_listener;
        bool has_sink;
 
@@ -147,7 +162,7 @@ struct bt_graph {
 static inline
 void bt_graph_set_can_consume(struct bt_graph *graph, bool can_consume)
 {
-       BT_ASSERT(graph);
+       BT_ASSERT_DBG(graph);
        graph->can_consume = can_consume;
 }
 
@@ -184,17 +199,24 @@ BT_HIDDEN
 void bt_graph_add_message(struct bt_graph *graph,
                struct bt_message *msg);
 
+BT_HIDDEN
+bool bt_graph_is_interrupted(const struct bt_graph *graph);
+
 static inline
 const char *bt_graph_configuration_state_string(
                enum bt_graph_configuration_state state)
 {
        switch (state) {
        case BT_GRAPH_CONFIGURATION_STATE_CONFIGURING:
-               return "BT_GRAPH_CONFIGURATION_STATE_CONFIGURING";
+               return "CONFIGURING";
        case BT_GRAPH_CONFIGURATION_STATE_PARTIALLY_CONFIGURED:
-               return "BT_GRAPH_CONFIGURATION_STATE_PARTIALLY_CONFIGURED";
+               return "PARTIALLY_CONFIGURED";
        case BT_GRAPH_CONFIGURATION_STATE_CONFIGURED:
-               return "BT_GRAPH_CONFIGURATION_STATE_CONFIGURED";
+               return "CONFIGURED";
+       case BT_GRAPH_CONFIGURATION_STATE_FAULTY:
+               return "FAULTY";
+       case BT_GRAPH_CONFIGURATION_STATE_DESTROYING:
+               return "DESTROYING";
        default:
                return "(unknown)";
        }
@@ -206,7 +228,8 @@ int bt_graph_configure(struct bt_graph *graph)
        int status = BT_FUNC_STATUS_OK;
        uint64_t i;
 
-       BT_ASSERT(graph->config_state != BT_GRAPH_CONFIGURATION_STATE_FAULTY);
+       BT_ASSERT_DBG(graph->config_state !=
+               BT_GRAPH_CONFIGURATION_STATE_FAULTY);
 
        if (G_LIKELY(graph->config_state ==
                        BT_GRAPH_CONFIGURATION_STATE_CONFIGURED)) {
@@ -246,7 +269,6 @@ int bt_graph_configure(struct bt_graph *graph)
                                "Unexpected returned status: status=%s",
                                bt_common_func_status_string(comp_status));
                        if (comp_status != BT_FUNC_STATUS_OK) {
-                               comp_status = BT_FUNC_STATUS_ERROR;
                                if (comp_status < 0) {
                                        BT_LIB_LOGW_APPEND_CAUSE(
                                                "Component's \"graph is configured\" method failed: "
This page took 0.025915 seconds and 4 git commands to generate.