lib: introduce bt_message_iterator_class
[babeltrace.git] / src / lib / graph / component.c
index 11144fb42c400eb531b8fa8340f43ef3d0a1eaec..c771e27870cd15ca40ca27736ca794a55a836374 100644 (file)
@@ -100,13 +100,22 @@ void finalize_component(struct bt_component *comp)
                break;
        }
        default:
-               abort();
+               bt_common_abort();
        }
 
        if (method) {
+               const struct bt_error *saved_error;
+
+               saved_error = bt_current_thread_take_error();
+
                BT_LIB_LOGI("Calling user's component finalization method: "
                        "%![comp-]+c", comp);
                method(comp);
+               BT_ASSERT_POST_NO_ERROR();
+
+               if (saved_error) {
+                       BT_CURRENT_THREAD_MOVE_ERROR_AND_RESET(saved_error);
+               }
        }
 }
 
@@ -307,7 +316,7 @@ int bt_component_create(struct bt_component_class *component_class,
 
        bt_object_init_shared_with_parent(&component->base, destroy_component);
        component->class = component_class;
-       bt_object_get_no_null_check(component->class);
+       bt_object_get_ref_no_null_check(component->class);
        component->destroy = component_destroy_funcs[type];
        component->name = g_string_new(name);
        if (!component->name) {
@@ -501,7 +510,7 @@ bt_component_port_connected(
                        method = (method_t) src_cc->methods.output_port_connected;
                        break;
                default:
-                       abort();
+                       bt_common_abort();
                }
 
                break;
@@ -518,7 +527,7 @@ bt_component_port_connected(
                        method = (method_t) flt_cc->methods.output_port_connected;
                        break;
                default:
-                       abort();
+                       bt_common_abort();
                }
 
                break;
@@ -532,13 +541,13 @@ bt_component_port_connected(
                        method = (method_t) sink_cc->methods.input_port_connected;
                        break;
                default:
-                       abort();
+                       bt_common_abort();
                }
 
                break;
        }
        default:
-               abort();
+               bt_common_abort();
        }
 
        if (method) {
@@ -553,6 +562,7 @@ bt_component_port_connected(
                        status == BT_FUNC_STATUS_MEMORY_ERROR,
                        "Unexpected returned component status: status=%s",
                        bt_common_func_status_string(status));
+               BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(status);
        }
 
        return status;
@@ -605,6 +615,15 @@ bt_logging_level bt_component_get_logging_level(
        return component->log_level;
 }
 
+uint64_t bt_self_component_get_graph_mip_version(
+               bt_self_component *self_component)
+{
+       struct bt_component *comp = (void *) self_component;
+
+       BT_ASSERT_PRE_NON_NULL(self_component, "Component");
+       return bt_component_borrow_graph(comp)->mip_version;
+}
+
 void bt_component_get_ref(const struct bt_component *component)
 {
        bt_object_get_ref(component);
This page took 0.030713 seconds and 4 git commands to generate.