X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent-class.c;h=ea90b5ce32ab8987be8064983aeefd6b747b5046;hb=a3f0c7db90f4cfc81090a83a7442b7bc624d5789;hp=87bdb936e3ccf906c74a6b4c93ae06b4daa7c5ab;hpb=578e048b5debf169e286e5b5cc747b5d6c16886d;p=babeltrace.git diff --git a/src/lib/graph/component-class.c b/src/lib/graph/component-class.c index 87bdb936..ea90b5ce 100644 --- a/src/lib/graph/component-class.c +++ b/src/lib/graph/component-class.c @@ -21,8 +21,8 @@ * SOFTWARE. */ -#define BT_LOG_TAG "COMP-CLASS" -#include "lib/lib-logging.h" +#define BT_LOG_TAG "LIB/COMPONENT-CLASS" +#include "lib/logging.h" #include "common/assert.h" #include "lib/assert-pre.h" @@ -39,9 +39,11 @@ #include #include "component-class.h" +#include "lib/func-status.h" +#include "lib/graph/message-iterator-class.h" -#define BT_ASSERT_PRE_COMP_CLS_HOT(_cc) \ - BT_ASSERT_PRE_HOT(((const struct bt_component_class *) (_cc)), \ +#define BT_ASSERT_PRE_DEV_COMP_CLS_HOT(_cc) \ + BT_ASSERT_PRE_DEV_HOT(((const struct bt_component_class *) (_cc)), \ "Component class", ": %!+C", (_cc)) static @@ -53,7 +55,7 @@ void destroy_component_class(struct bt_object *obj) BT_ASSERT(obj); class = container_of(obj, struct bt_component_class, base); - BT_LIB_LOGD("Destroying component class: %!+C", class); + BT_LIB_LOGI("Destroying component class: %!+C", class); /* Call destroy listeners in reverse registration order */ for (i = class->destroy_listeners->len - 1; i >= 0; i--) { @@ -82,11 +84,34 @@ void destroy_component_class(struct bt_object *obj) class->help = NULL; } + if (class->plugin_name) { + g_string_free(class->plugin_name, TRUE); + class->plugin_name = NULL; + } + if (class->destroy_listeners) { g_array_free(class->destroy_listeners, TRUE); class->destroy_listeners = NULL; } + if (class->type == BT_COMPONENT_CLASS_TYPE_SOURCE) { + struct bt_component_class_source *class_src + = container_of(class, struct bt_component_class_source, + parent); + + BT_ASSERT(class_src->msg_iter_cls); + bt_message_iterator_class_put_ref(class_src->msg_iter_cls); + class_src->msg_iter_cls = NULL; + } else if (class->type == BT_COMPONENT_CLASS_TYPE_FILTER) { + struct bt_component_class_filter *class_flt + = container_of(class, struct bt_component_class_filter, + parent); + + BT_ASSERT(class_flt->msg_iter_cls); + bt_message_iterator_class_put_ref(class_flt->msg_iter_cls); + class_flt->msg_iter_cls = NULL; + } + g_free(class); } @@ -100,26 +125,32 @@ int bt_component_class_init(struct bt_component_class *class, class->type = type; class->name = g_string_new(name); if (!class->name) { - BT_LOGE_STR("Failed to allocate a GString."); + BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); goto error; } class->description = g_string_new(NULL); if (!class->description) { - BT_LOGE_STR("Failed to allocate a GString."); + BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); goto error; } class->help = g_string_new(NULL); if (!class->help) { - BT_LOGE_STR("Failed to allocate a GString."); + BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); + goto error; + } + + class->plugin_name = g_string_new(NULL); + if (!class->plugin_name) { + BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); goto error; } class->destroy_listeners = g_array_new(FALSE, TRUE, sizeof(struct bt_component_class_destroy_listener)); if (!class->destroy_listeners) { - BT_LOGE_STR("Failed to allocate a GArray."); + BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GArray."); goto error; } @@ -135,19 +166,21 @@ end: struct bt_component_class_source *bt_component_class_source_create( const char *name, - bt_component_class_source_message_iterator_next_method method) + struct bt_message_iterator_class *message_iterator_class) { struct bt_component_class_source *source_class = NULL; int ret; + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(name, "Name"); - BT_ASSERT_PRE_NON_NULL(method, "Message iterator next method"); - BT_LOGD("Creating source component class: " - "name=\"%s\", msg-iter-next-method-addr=%p", - name, method); + BT_ASSERT_PRE_NON_NULL(message_iterator_class, "Message iterator class"); + BT_LIB_LOGI("Creating source component class: " + "name=\"%s\", %![msg-iter-cls-]+I", + name, message_iterator_class); source_class = g_new0(struct bt_component_class_source, 1); if (!source_class) { - BT_LOGE_STR("Failed to allocate one source component class."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one source component class."); goto end; } @@ -164,8 +197,11 @@ struct bt_component_class_source *bt_component_class_source_create( goto end; } - source_class->methods.msg_iter_next = method; - BT_LIB_LOGD("Created source component class: %!+C", source_class); + source_class->msg_iter_cls = message_iterator_class; + bt_message_iterator_class_get_ref(source_class->msg_iter_cls); + bt_message_iterator_class_freeze(source_class->msg_iter_cls); + + BT_LIB_LOGI("Created source component class: %!+C", source_class); end: return (void *) source_class; @@ -173,19 +209,21 @@ end: struct bt_component_class_filter *bt_component_class_filter_create( const char *name, - bt_component_class_filter_message_iterator_next_method method) + struct bt_message_iterator_class *message_iterator_class) { struct bt_component_class_filter *filter_class = NULL; int ret; + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(name, "Name"); - BT_ASSERT_PRE_NON_NULL(method, "Message iterator next method"); - BT_LOGD("Creating filter component class: " - "name=\"%s\", msg-iter-next-method-addr=%p", - name, method); + BT_ASSERT_PRE_NON_NULL(message_iterator_class, "Message iterator class"); + BT_LIB_LOGI("Creating filter component class: " + "name=\"%s\", %![msg-iter-cls-]+I", + name, message_iterator_class); filter_class = g_new0(struct bt_component_class_filter, 1); if (!filter_class) { - BT_LOGE_STR("Failed to allocate one filter component class."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one filter component class."); goto end; } @@ -202,8 +240,11 @@ struct bt_component_class_filter *bt_component_class_filter_create( goto end; } - filter_class->methods.msg_iter_next = method; - BT_LIB_LOGD("Created filter component class: %!+C", filter_class); + filter_class->msg_iter_cls = message_iterator_class; + bt_message_iterator_class_get_ref(filter_class->msg_iter_cls); + bt_message_iterator_class_freeze(filter_class->msg_iter_cls); + + BT_LIB_LOGI("Created filter component class: %!+C", filter_class); end: return (void *) filter_class; @@ -215,14 +256,16 @@ struct bt_component_class_sink *bt_component_class_sink_create( struct bt_component_class_sink *sink_class = NULL; int ret; + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(name, "Name"); BT_ASSERT_PRE_NON_NULL(method, "Consume next method"); - BT_LOGD("Creating sink component class: " + BT_LOGI("Creating sink component class: " "name=\"%s\", consume-method-addr=%p", 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."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one sink component class."); goto end; } @@ -240,476 +283,315 @@ struct bt_component_class_sink *bt_component_class_sink_create( } sink_class->methods.consume = method; - BT_LIB_LOGD("Created sink component class: %!+C", sink_class); + BT_LIB_LOGI("Created sink component class: %!+C", sink_class); end: return (void *) sink_class; } -enum bt_component_class_status -bt_component_class_source_set_init_method( +enum bt_component_class_set_method_status +bt_component_class_source_set_get_supported_mip_versions_method( struct bt_component_class_source *comp_cls, - bt_component_class_source_init_method method) + bt_component_class_source_get_supported_mip_versions_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); + comp_cls->methods.get_supported_mip_versions = method; + BT_LIB_LOGD("Set source component class's \"get supported MIP versions\" method: " + "%!+C", comp_cls); + return BT_FUNC_STATUS_OK; +} + +enum bt_component_class_set_method_status +bt_component_class_filter_set_get_supported_mip_versions_method( + struct bt_component_class_filter *comp_cls, + bt_component_class_filter_get_supported_mip_versions_method method) +{ + BT_ASSERT_PRE_NO_ERROR(); + BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_NON_NULL(method, "Method"); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); + comp_cls->methods.get_supported_mip_versions = method; + BT_LIB_LOGD("Set filter component class's \"get supported MIP versions\" method: " + "%!+C", comp_cls); + return BT_FUNC_STATUS_OK; +} + +enum bt_component_class_set_method_status +bt_component_class_sink_set_get_supported_mip_versions_method( + struct bt_component_class_sink *comp_cls, + bt_component_class_sink_get_supported_mip_versions_method method) +{ + BT_ASSERT_PRE_NO_ERROR(); + BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_NON_NULL(method, "Method"); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); + comp_cls->methods.get_supported_mip_versions = method; + BT_LIB_LOGD("Set sink component class's \"get supported MIP versions\" method: " + "%!+C", comp_cls); + return BT_FUNC_STATUS_OK; +} + +enum bt_component_class_set_method_status +bt_component_class_source_set_initialize_method( + struct bt_component_class_source *comp_cls, + bt_component_class_source_initialize_method method) +{ + BT_ASSERT_PRE_NO_ERROR(); + BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_NON_NULL(method, "Method"); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.init = method; - BT_LIB_LOGV("Set source component class's initialization method: " + BT_LIB_LOGD("Set source component class's initialization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status -bt_component_class_filter_set_init_method( +enum bt_component_class_set_method_status +bt_component_class_filter_set_initialize_method( struct bt_component_class_filter *comp_cls, - bt_component_class_filter_init_method method) + bt_component_class_filter_initialize_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.init = method; - BT_LIB_LOGV("Set filter component class's initialization method: " + BT_LIB_LOGD("Set filter component class's initialization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status -bt_component_class_sink_set_init_method( +enum bt_component_class_set_method_status +bt_component_class_sink_set_initialize_method( struct bt_component_class_sink *comp_cls, - bt_component_class_sink_init_method method) + bt_component_class_sink_initialize_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.init = method; - BT_LIB_LOGV("Set sink component class's initialization method: " + BT_LIB_LOGD("Set sink component class's initialization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_source_set_finalize_method( struct bt_component_class_source *comp_cls, bt_component_class_source_finalize_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.finalize = method; - BT_LIB_LOGV("Set source component class's finalization method: " + BT_LIB_LOGD("Set source component class's finalization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_filter_set_finalize_method( struct bt_component_class_filter *comp_cls, bt_component_class_filter_finalize_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.finalize = method; - BT_LIB_LOGV("Set filter component class's finalization method: " + BT_LIB_LOGD("Set filter component class's finalization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_sink_set_finalize_method( struct bt_component_class_sink *comp_cls, bt_component_class_sink_finalize_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.finalize = method; - BT_LIB_LOGV("Set sink component class's finalization method: " + BT_LIB_LOGD("Set sink component class's finalization method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_source_set_query_method( struct bt_component_class_source *comp_cls, bt_component_class_source_query_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.query = method; - BT_LIB_LOGV("Set source component class's query method: " + BT_LIB_LOGD("Set source component class's query method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_filter_set_query_method( struct bt_component_class_filter *comp_cls, bt_component_class_filter_query_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.query = method; - BT_LIB_LOGV("Set filter component class's query method: " + BT_LIB_LOGD("Set filter component class's query method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_sink_set_query_method( struct bt_component_class_sink *comp_cls, bt_component_class_sink_query_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.query = method; - BT_LIB_LOGV("Set sink component class's query method: " + BT_LIB_LOGD("Set sink component class's query method: " "%!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_accept_input_port_connection_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_accept_input_port_connection_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.accept_input_port_connection = method; - BT_LIB_LOGV("Set filter component class's \"accept input port connection\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_sink_set_accept_input_port_connection_method( - struct bt_component_class_sink *comp_cls, - bt_component_class_sink_accept_input_port_connection_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.accept_input_port_connection = method; - BT_LIB_LOGV("Set sink component class's \"accept input port connection\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status -bt_component_class_source_set_accept_output_port_connection_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_accept_output_port_connection_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.accept_output_port_connection = method; - BT_LIB_LOGV("Set source component class's \"accept output port connection\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_accept_output_port_connection_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_accept_output_port_connection_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.accept_output_port_connection = method; - BT_LIB_LOGV("Set filter component class's \"accept output port connection\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_filter_set_input_port_connected_method( struct bt_component_class_filter *comp_cls, bt_component_class_filter_input_port_connected_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.input_port_connected = method; - BT_LIB_LOGV("Set filter component class's \"input port connected\" method" + BT_LIB_LOGD("Set filter component class's \"input port connected\" method" ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_sink_set_input_port_connected_method( struct bt_component_class_sink *comp_cls, bt_component_class_sink_input_port_connected_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.input_port_connected = method; - BT_LIB_LOGV("Set sink component class's \"input port connected\" method" + BT_LIB_LOGD("Set sink component class's \"input port connected\" method" ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_source_set_output_port_connected_method( struct bt_component_class_source *comp_cls, bt_component_class_source_output_port_connected_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.output_port_connected = method; - BT_LIB_LOGV("Set source component class's \"output port connected\" method" + BT_LIB_LOGD("Set source component class's \"output port connected\" method" ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_filter_set_output_port_connected_method( struct bt_component_class_filter *comp_cls, bt_component_class_filter_output_port_connected_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.output_port_connected = method; - BT_LIB_LOGV("Set filter component class's \"output port connected\" method" + BT_LIB_LOGD("Set filter component class's \"output port connected\" method" ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status +enum bt_component_class_set_method_status bt_component_class_sink_set_graph_is_configured_method( struct bt_component_class_sink *comp_cls, bt_component_class_sink_graph_is_configured_method method) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); comp_cls->methods.graph_is_configured = method; - BT_LIB_LOGV("Set sink component class's \"graph is configured\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -int bt_component_class_source_set_message_iterator_init_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_init_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_init = method; - BT_LIB_LOGV("Set source component class's message iterator initialization method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_init_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_init_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_init = method; - BT_LIB_LOGV("Set filter component class's message iterator initialization method" + BT_LIB_LOGD("Set sink component class's \"graph is configured\" method" ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -enum bt_component_class_status -bt_component_class_source_set_message_iterator_finalize_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_finalize_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_finalize = method; - BT_LIB_LOGV("Set source component class's message iterator finalization method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_finalize_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_finalize_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_finalize = method; - BT_LIB_LOGV("Set filter component class's message iterator finalization method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_seek_ns_from_origin_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_seek_ns_from_origin_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_seek_ns_from_origin = method; - BT_LIB_LOGV("Set filter component class's message iterator \"seek nanoseconds from origin\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_source_set_message_iterator_seek_ns_from_origin_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_seek_ns_from_origin_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_seek_ns_from_origin = method; - BT_LIB_LOGV("Set source component class's message iterator \"seek nanoseconds from origin\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_seek_beginning_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_seek_beginning_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_seek_beginning = method; - BT_LIB_LOGV("Set filter component class's message iterator \"seek beginning\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_source_set_message_iterator_seek_beginning_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_seek_beginning_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_seek_beginning = method; - BT_LIB_LOGV("Set source component class's message iterator \"seek beginning\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_can_seek_beginning_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_can_seek_beginning_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_can_seek_beginning = method; - BT_LIB_LOGV("Set filter component class's message iterator \"can seek beginning\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_source_set_message_iterator_can_seek_beginning_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_can_seek_beginning_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_can_seek_beginning = method; - BT_LIB_LOGV("Set source component class's message iterator \"can seek beginning\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_filter_set_message_iterator_can_seek_ns_from_origin_method( - struct bt_component_class_filter *comp_cls, - bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_can_seek_ns_from_origin = method; - BT_LIB_LOGV("Set filter component class's message iterator \"can seek nanoseconds from origin\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -enum bt_component_class_status -bt_component_class_source_set_message_iterator_can_seek_ns_from_origin_method( - struct bt_component_class_source *comp_cls, - bt_component_class_source_message_iterator_can_seek_ns_from_origin_method method) -{ - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); - BT_ASSERT_PRE_NON_NULL(method, "Method"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); - comp_cls->methods.msg_iter_can_seek_ns_from_origin = method; - BT_LIB_LOGV("Set source component class's message iterator \"can seek nanoseconds from origin\" method" - ": %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; -} - -bt_component_class_status bt_component_class_set_description( +enum bt_component_class_set_description_status +bt_component_class_set_description( struct bt_component_class *comp_cls, const char *description) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(description, "Description"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); g_string_assign(comp_cls->description, description); - BT_LIB_LOGV("Set component class's description: " + BT_LIB_LOGD("Set component class's description: " "addr=%p, name=\"%s\", type=%s", comp_cls, bt_component_class_get_name(comp_cls), bt_component_class_type_string(comp_cls->type)); - return BT_COMPONENT_CLASS_STATUS_OK; + return BT_FUNC_STATUS_OK; } -bt_component_class_status bt_component_class_set_help( +enum bt_component_class_set_help_status bt_component_class_set_help( struct bt_component_class *comp_cls, const char *help) { + BT_ASSERT_PRE_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); BT_ASSERT_PRE_NON_NULL(help, "Help"); - BT_ASSERT_PRE_COMP_CLS_HOT(comp_cls); + BT_ASSERT_PRE_DEV_COMP_CLS_HOT(comp_cls); g_string_assign(comp_cls->help, help); - BT_LIB_LOGV("Set component class's help text: %!+C", comp_cls); - return BT_COMPONENT_CLASS_STATUS_OK; + BT_LIB_LOGD("Set component class's help text: %!+C", comp_cls); + return BT_FUNC_STATUS_OK; } const char *bt_component_class_get_name(const struct bt_component_class *comp_cls) { - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_DEV_NON_NULL(comp_cls, "Component class"); return comp_cls->name->str; } enum bt_component_class_type bt_component_class_get_type( const struct bt_component_class *comp_cls) { - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_DEV_NON_NULL(comp_cls, "Component class"); return comp_cls->type; } const char *bt_component_class_get_description( const struct bt_component_class *comp_cls) { - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_DEV_NON_NULL(comp_cls, "Component class"); return comp_cls->description && comp_cls->description->str[0] != '\0' ? comp_cls->description->str : NULL; @@ -718,7 +600,7 @@ const char *bt_component_class_get_description( const char *bt_component_class_get_help( const struct bt_component_class *comp_cls) { - BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class"); + BT_ASSERT_PRE_DEV_NON_NULL(comp_cls, "Component class"); return comp_cls->help && comp_cls->help->str[0] != '\0' ? comp_cls->help->str : NULL; } @@ -735,7 +617,7 @@ void bt_component_class_add_destroy_listener( listener.func = func; listener.data = data; g_array_append_val(comp_cls->destroy_listeners, listener); - BT_LIB_LOGV("Added destroy listener to component class: " + BT_LIB_LOGD("Added destroy listener to component class: " "%![cc-]+C, listener-func-addr=%p", comp_cls, func); }