lib: add internal object pool API and use it; adapt plugins/tests
[babeltrace.git] / lib / graph / component-class.c
index a899416dd2e4afab9ec11228dfb572fcfc5ec1fd..1df85b48f1baa0b4c79ee100c857fd13308dcc3d 100644 (file)
@@ -33,6 +33,7 @@
 #include <babeltrace/graph/component-class-internal.h>
 #include <babeltrace/ref.h>
 #include <babeltrace/types.h>
+#include <babeltrace/assert-internal.h>
 #include <glib.h>
 
 static
@@ -41,7 +42,7 @@ void bt_component_class_destroy(struct bt_object *obj)
        struct bt_component_class *class;
        int i;
 
-       assert(obj);
+       BT_ASSERT(obj);
        class = container_of(obj, struct bt_component_class, base);
 
        BT_LOGD("Destroying component class: "
@@ -121,7 +122,7 @@ end:
 }
 
 struct bt_component_class *bt_component_class_source_create(const char *name,
-               bt_component_class_notification_iterator_next_method notification_iterator_next_method)
+               bt_component_class_notification_iterator_next_method method)
 {
        struct bt_component_class_source *source_class = NULL;
        int ret;
@@ -131,14 +132,14 @@ struct bt_component_class *bt_component_class_source_create(const char *name,
                goto end;
        }
 
-       if (!notification_iterator_next_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                goto end;
        }
 
        BT_LOGD("Creating source component class: "
                "name=\"%s\", notif-iter-next-method-addr=%p",
-               name, notification_iterator_next_method);
+               name, method);
        source_class = g_new0(struct bt_component_class_source, 1);
        if (!source_class) {
                BT_LOGE_STR("Failed to allocate one source component class.");
@@ -158,17 +159,17 @@ struct bt_component_class *bt_component_class_source_create(const char *name,
                goto end;
        }
 
-       source_class->methods.iterator.next = notification_iterator_next_method;
+       source_class->methods.iterator.next = method;
        BT_LOGD("Created source component class: "
                "name=\"%s\", notif-iter-next-method-addr=%p, addr=%p",
-               name, notification_iterator_next_method, &source_class->parent);
+               name, method, &source_class->parent);
 
 end:
        return &source_class->parent;
 }
 
 struct bt_component_class *bt_component_class_filter_create(const char *name,
-               bt_component_class_notification_iterator_next_method notification_iterator_next_method)
+               bt_component_class_notification_iterator_next_method method)
 {
        struct bt_component_class_filter *filter_class = NULL;
        int ret;
@@ -178,14 +179,14 @@ struct bt_component_class *bt_component_class_filter_create(const char *name,
                goto end;
        }
 
-       if (!notification_iterator_next_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                goto end;
        }
 
        BT_LOGD("Creating filter component class: "
                "name=\"%s\", notif-iter-next-method-addr=%p",
-               name, notification_iterator_next_method);
+               name, method);
        filter_class = g_new0(struct bt_component_class_filter, 1);
        if (!filter_class) {
                BT_LOGE_STR("Failed to allocate one filter component class.");
@@ -205,17 +206,17 @@ struct bt_component_class *bt_component_class_filter_create(const char *name,
                goto end;
        }
 
-       filter_class->methods.iterator.next = notification_iterator_next_method;
+       filter_class->methods.iterator.next = method;
        BT_LOGD("Created filter component class: "
                "name=\"%s\", notif-iter-next-method-addr=%p, addr=%p",
-               name, notification_iterator_next_method, &filter_class->parent);
+               name, method, &filter_class->parent);
 
 end:
        return &filter_class->parent;
 }
 
 struct bt_component_class *bt_component_class_sink_create(const char *name,
-               bt_component_class_sink_consume_method consume_method)
+               bt_component_class_sink_consume_method method)
 {
        struct bt_component_class_sink *sink_class = NULL;
        int ret;
@@ -225,14 +226,14 @@ struct bt_component_class *bt_component_class_sink_create(const char *name,
                goto end;
        }
 
-       if (!consume_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                goto end;
        }
 
        BT_LOGD("Creating sink component class: "
                "name=\"%s\", consume-method-addr=%p",
-               name, consume_method);
+               name, method);
        sink_class = g_new0(struct bt_component_class_sink, 1);
        if (!sink_class) {
                BT_LOGE_STR("Failed to allocate one sink component class.");
@@ -252,10 +253,10 @@ struct bt_component_class *bt_component_class_sink_create(const char *name,
                goto end;
        }
 
-       sink_class->methods.consume = consume_method;
+       sink_class->methods.consume = method;
        BT_LOGD("Created sink component class: "
                "name=\"%s\", consume-method-addr=%p, addr=%p",
-               name, consume_method, &sink_class->parent);
+               name, method, &sink_class->parent);
 
 end:
        return &sink_class->parent;
@@ -263,7 +264,7 @@ end:
 
 int bt_component_class_set_init_method(
                struct bt_component_class *component_class,
-               bt_component_class_init_method init_method)
+               bt_component_class_init_method method)
 {
        int ret = 0;
 
@@ -273,7 +274,7 @@ int bt_component_class_set_init_method(
                goto end;
        }
 
-       if (!init_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -289,13 +290,13 @@ int bt_component_class_set_init_method(
                goto end;
        }
 
-       component_class->methods.init = init_method;
+       component_class->methods.init = method;
        BT_LOGV("Set component class's initialization method: "
                "addr=%p, name=\"%s\", type=%s, method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
                bt_component_class_type_string(component_class->type),
-               init_method);
+               method);
 
 end:
        return ret;
@@ -303,7 +304,7 @@ end:
 
 int bt_component_class_set_query_method(
                struct bt_component_class *component_class,
-               bt_component_class_query_method query_method)
+               bt_component_class_query_method method)
 {
        int ret = 0;
 
@@ -313,7 +314,7 @@ int bt_component_class_set_query_method(
                goto end;
        }
 
-       if (!query_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -329,13 +330,13 @@ int bt_component_class_set_query_method(
                goto end;
        }
 
-       component_class->methods.query = query_method;
+       component_class->methods.query = method;
        BT_LOGV("Set component class's query method: "
                "addr=%p, name=\"%s\", type=%s, method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
                bt_component_class_type_string(component_class->type),
-               query_method);
+               method);
 
 end:
        return ret;
@@ -463,7 +464,7 @@ end:
 
 int bt_component_class_set_finalize_method(
                struct bt_component_class *component_class,
-               bt_component_class_finalize_method finalize_method)
+               bt_component_class_finalize_method method)
 {
        int ret = 0;
 
@@ -473,7 +474,7 @@ int bt_component_class_set_finalize_method(
                goto end;
        }
 
-       if (!finalize_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -489,13 +490,13 @@ int bt_component_class_set_finalize_method(
                goto end;
        }
 
-       component_class->methods.finalize = finalize_method;
+       component_class->methods.finalize = method;
        BT_LOGV("Set component class's finalization method: "
                "addr=%p, name=\"%s\", type=%s, method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
                bt_component_class_type_string(component_class->type),
-               finalize_method);
+               method);
 
 end:
        return ret;
@@ -503,7 +504,7 @@ end:
 
 int bt_component_class_source_set_notification_iterator_init_method(
                struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_init_method notification_iterator_init_method)
+               bt_component_class_notification_iterator_init_method method)
 {
        struct bt_component_class_source *source_class;
        int ret = 0;
@@ -514,7 +515,7 @@ int bt_component_class_source_set_notification_iterator_init_method(
                goto end;
        }
 
-       if (!notification_iterator_init_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -542,12 +543,12 @@ int bt_component_class_source_set_notification_iterator_init_method(
 
        source_class = container_of(component_class,
                struct bt_component_class_source, parent);
-       source_class->methods.iterator.init = notification_iterator_init_method;
+       source_class->methods.iterator.init = method;
        BT_LOGV("Set filter component class's notification iterator initialization method: "
                "addr=%p, name=\"%s\", method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
-               notification_iterator_init_method);
+               method);
 
 end:
        return ret;
@@ -555,7 +556,7 @@ end:
 
 int bt_component_class_source_set_notification_iterator_finalize_method(
                struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_finalize_method notification_iterator_finalize_method)
+               bt_component_class_notification_iterator_finalize_method method)
 {
        struct bt_component_class_source *source_class;
        int ret = 0;
@@ -566,7 +567,7 @@ int bt_component_class_source_set_notification_iterator_finalize_method(
                goto end;
        }
 
-       if (!notification_iterator_finalize_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -595,65 +596,12 @@ int bt_component_class_source_set_notification_iterator_finalize_method(
        source_class = container_of(component_class,
                struct bt_component_class_source, parent);
        source_class->methods.iterator.finalize =
-               notification_iterator_finalize_method;
+               method;
        BT_LOGV("Set filter component class's notification iterator finalization method: "
                "addr=%p, name=\"%s\", method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
-               notification_iterator_finalize_method);
-
-end:
-       return ret;
-}
-
-int bt_component_class_source_set_notification_iterator_seek_time_method(
-               struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
-{
-       struct bt_component_class_source *source_class;
-       int ret = 0;
-
-       if (!component_class) {
-               BT_LOGW_STR("Invalid parameter: component class is NULL.");
-               ret = -1;
-               goto end;
-       }
-
-       if (!notification_iterator_seek_time_method) {
-               BT_LOGW_STR("Invalid parameter: method is NULL.");
-               ret = -1;
-               goto end;
-       }
-
-       if (component_class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) {
-               BT_LOGW("Invalid parameter: component class is not a source component class: "
-                       "addr=%p, name=\"%s\", type=%s",
-                       component_class,
-                       bt_component_class_get_name(component_class),
-                       bt_component_class_type_string(component_class->type));
-               ret = -1;
-               goto end;
-       }
-
-       if (component_class->frozen) {
-               BT_LOGW("Invalid parameter: component class is frozen: "
-                       "addr=%p, name=\"%s\", type=%s",
-                       component_class,
-                       bt_component_class_get_name(component_class),
-                       bt_component_class_type_string(component_class->type));
-               ret = -1;
-               goto end;
-       }
-
-       source_class = container_of(component_class,
-               struct bt_component_class_source, parent);
-       source_class->methods.iterator.seek_time =
-               notification_iterator_seek_time_method;
-       BT_LOGV("Set source component class's notification iterator seek time method: "
-               "addr=%p, name=\"%s\", method-addr=%p",
-               component_class,
-               bt_component_class_get_name(component_class),
-               notification_iterator_seek_time_method);
+               method);
 
 end:
        return ret;
@@ -661,7 +609,7 @@ end:
 
 int bt_component_class_filter_set_notification_iterator_init_method(
                struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_init_method notification_iterator_init_method)
+               bt_component_class_notification_iterator_init_method method)
 {
        struct bt_component_class_filter *filter_class;
        int ret = 0;
@@ -672,7 +620,7 @@ int bt_component_class_filter_set_notification_iterator_init_method(
                goto end;
        }
 
-       if (!notification_iterator_init_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -700,12 +648,12 @@ int bt_component_class_filter_set_notification_iterator_init_method(
 
        filter_class = container_of(component_class,
                struct bt_component_class_filter, parent);
-       filter_class->methods.iterator.init = notification_iterator_init_method;
+       filter_class->methods.iterator.init = method;
        BT_LOGV("Set filter component class's notification iterator initialization method: "
                "addr=%p, name=\"%s\", method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
-               notification_iterator_init_method);
+               method);
 
 end:
        return ret;
@@ -713,7 +661,7 @@ end:
 
 int bt_component_class_filter_set_notification_iterator_finalize_method(
                struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_finalize_method notification_iterator_finalize_method)
+               bt_component_class_notification_iterator_finalize_method method)
 {
        struct bt_component_class_filter *filter_class;
        int ret = 0;
@@ -724,7 +672,7 @@ int bt_component_class_filter_set_notification_iterator_finalize_method(
                goto end;
        }
 
-       if (!notification_iterator_finalize_method) {
+       if (!method) {
                BT_LOGW_STR("Invalid parameter: method is NULL.");
                ret = -1;
                goto end;
@@ -753,65 +701,12 @@ int bt_component_class_filter_set_notification_iterator_finalize_method(
        filter_class = container_of(component_class,
                struct bt_component_class_filter, parent);
        filter_class->methods.iterator.finalize =
-               notification_iterator_finalize_method;
+               method;
        BT_LOGV("Set filter component class's notification iterator finalization method: "
                "addr=%p, name=\"%s\", method-addr=%p",
                component_class,
                bt_component_class_get_name(component_class),
-               notification_iterator_finalize_method);
-
-end:
-       return ret;
-}
-
-int bt_component_class_filter_set_notification_iterator_seek_time_method(
-               struct bt_component_class *component_class,
-               bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
-{
-       struct bt_component_class_filter *filter_class;
-       int ret = 0;
-
-       if (!component_class) {
-               BT_LOGW_STR("Invalid parameter: component class is NULL.");
-               ret = -1;
-               goto end;
-       }
-
-       if (!notification_iterator_seek_time_method) {
-               BT_LOGW_STR("Invalid parameter: method is NULL.");
-               ret = -1;
-               goto end;
-       }
-
-       if (component_class->type != BT_COMPONENT_CLASS_TYPE_FILTER) {
-               BT_LOGW("Invalid parameter: component class is not a filter component class: "
-                       "addr=%p, name=\"%s\", type=%s",
-                       component_class,
-                       bt_component_class_get_name(component_class),
-                       bt_component_class_type_string(component_class->type));
-               ret = -1;
-               goto end;
-       }
-
-       if (component_class->frozen) {
-               BT_LOGW("Invalid parameter: component class is frozen: "
-                       "addr=%p, name=\"%s\", type=%s",
-                       component_class,
-                       bt_component_class_get_name(component_class),
-                       bt_component_class_type_string(component_class->type));
-               ret = -1;
-               goto end;
-       }
-
-       filter_class = container_of(component_class,
-               struct bt_component_class_filter, parent);
-       filter_class->methods.iterator.seek_time =
-               notification_iterator_seek_time_method;
-       BT_LOGV("Set filter component class's notification iterator seek time method: "
-               "addr=%p, name=\"%s\", method-addr=%p",
-               component_class,
-               bt_component_class_get_name(component_class),
-               notification_iterator_seek_time_method);
+               method);
 
 end:
        return ret;
@@ -930,8 +825,8 @@ void bt_component_class_add_destroy_listener(struct bt_component_class *class,
 {
        struct bt_component_class_destroy_listener listener;
 
-       assert(class);
-       assert(func);
+       BT_ASSERT(class);
+       BT_ASSERT(func);
        listener.func = func;
        listener.data = data;
        g_array_append_val(class->destroy_listeners, listener);
@@ -969,49 +864,3 @@ int bt_component_class_freeze(
 end:
        return ret;
 }
-
-struct bt_value *bt_component_class_query(
-               struct bt_component_class *component_class,
-               const char *object, struct bt_value *params)
-{
-       struct bt_value *results = NULL;
-
-       if (!component_class) {
-               BT_LOGW_STR("Invalid parameter: component class is NULL.");
-               goto end;
-       }
-
-       if (!object) {
-               BT_LOGW_STR("Invalid parameter: object string is NULL.");
-               goto end;
-       }
-
-       if (!params) {
-               BT_LOGW_STR("Invalid parameter: parameters value is NULL.");
-               goto end;
-       }
-
-       if (!component_class->methods.query) {
-               /* Not an error: nothing to query */
-               BT_LOGD("Component class has no registered query method: "
-                       "addr=%p, name=\"%s\", type=%s",
-                       component_class,
-                       bt_component_class_get_name(component_class),
-                       bt_component_class_type_string(component_class->type));
-               goto end;
-       }
-
-       BT_LOGD("Calling user's query method: "
-               "comp-class-addr=%p, comp-class-name=\"%s\", comp-class-type=%s"
-               "object=\"%s\", params-addr=%p",
-               component_class,
-               bt_component_class_get_name(component_class),
-               bt_component_class_type_string(component_class->type),
-               object, params);
-       results = component_class->methods.query(component_class,
-               object, params);
-       BT_LOGD("User method returned: results-addr=%p", results);
-
-end:
-       return results;
-}
This page took 0.031114 seconds and 4 git commands to generate.