Set notification iterator methods to the component class
[babeltrace.git] / lib / component / component.c
index c188261c7554bcca85088e132359bf45d19c952f..d6921a42da4b2e7235b0661be163df38330d9556 100644 (file)
@@ -134,29 +134,27 @@ struct bt_notification_iterator *bt_component_create_iterator(
        case BT_COMPONENT_CLASS_TYPE_SOURCE:
        {
                struct bt_component_class_source *source_class;
-               enum bt_component_status ret_component;
+               enum bt_notification_iterator_status status;
 
                source_class = container_of(class, struct bt_component_class_source, parent);
-               assert(source_class->methods.init_iterator);
-               ret_component =
-                       source_class->methods.init_iterator(component, iterator);
-               if (ret_component != BT_COMPONENT_STATUS_OK) {
+               assert(source_class->methods.iterator.init);
+               status = source_class->methods.iterator.init(component,
+                               iterator);
+               if (status < 0) {
                        goto error;
                }
                break;
-
-               break;
        }
        case BT_COMPONENT_CLASS_TYPE_FILTER:
        {
                struct bt_component_class_filter *filter_class;
-               enum bt_component_status ret_component;
+               enum bt_notification_iterator_status status;
 
                filter_class = container_of(class, struct bt_component_class_filter, parent);
-               assert(filter_class->methods.init_iterator);
-               ret_component =
-                       filter_class->methods.init_iterator(component, iterator);
-               if (ret_component != BT_COMPONENT_STATUS_OK) {
+               assert(filter_class->methods.iterator.init);
+               status = filter_class->methods.iterator.init(component,
+                               iterator);
+               if (status < 0) {
                        goto error;
                }
                break;
@@ -177,9 +175,9 @@ error:
        return iterator;
 }
 
-struct bt_component *bt_component_create(
+struct bt_component *bt_component_create_with_init_method_data(
                struct bt_component_class *component_class, const char *name,
-               struct bt_value *params)
+               struct bt_value *params, void *init_method_data)
 {
        int ret;
        struct bt_component *component = NULL;
@@ -189,7 +187,6 @@ struct bt_component *bt_component_create(
                goto end;
        }
 
-
        type = bt_component_class_get_type(component_class);
        if (type <= BT_COMPONENT_CLASS_TYPE_UNKNOWN ||
                        type > BT_COMPONENT_CLASS_TYPE_FILTER) {
@@ -211,7 +208,8 @@ struct bt_component *bt_component_create(
        component->initializing = true;
 
        if (component_class->methods.init) {
-               ret = component_class->methods.init(component, params);
+               ret = component_class->methods.init(component, params,
+                       init_method_data);
                component->initializing = false;
                if (ret != BT_COMPONENT_STATUS_OK) {
                        BT_PUT(component);
@@ -231,6 +229,14 @@ end:
        return component;
 }
 
+struct bt_component *bt_component_create(
+               struct bt_component_class *component_class, const char *name,
+               struct bt_value *params)
+{
+       return bt_component_create_with_init_method_data(component_class, name,
+               params, NULL);
+}
+
 const char *bt_component_get_name(struct bt_component *component)
 {
        const char *ret = NULL;
This page took 0.026336 seconds and 4 git commands to generate.