X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fplugins%2Futils%2Fdummy%2Fdummy.c;h=703535e7707754d4841dcddab9da4d7d04375fb3;hb=b7045dd71bc0524ad6b5db96df365e98e237d395;hp=681db3b65cce0349b7bcb36583a5e735c2a1cf39;hpb=ca02df0ad8ae9a1a3640956d91ca31059d0b203a;p=babeltrace.git diff --git a/src/plugins/utils/dummy/dummy.c b/src/plugins/utils/dummy/dummy.c index 681db3b6..703535e7 100644 --- a/src/plugins/utils/dummy/dummy.c +++ b/src/plugins/utils/dummy/dummy.c @@ -20,10 +20,16 @@ * SOFTWARE. */ +#define BT_COMP_LOG_SELF_COMP self_comp +#define BT_LOG_OUTPUT_LEVEL log_level +#define BT_LOG_TAG "PLUGIN/SINK.UTILS.DUMMY" +#include "logging/comp-logging.h" + #include #include "common/macros.h" #include "common/assert.h" #include "dummy.h" +#include "plugins/common/param-validation/param-validation.h" static const char * const in_port_name = "in"; @@ -47,43 +53,61 @@ void dummy_finalize(bt_self_component_sink *comp) destroy_private_dummy_data(dummy); } +struct bt_param_validation_map_value_entry_descr dummy_params[] = { + BT_PARAM_VALIDATION_MAP_VALUE_ENTRY_END +}; + BT_HIDDEN -bt_component_class_init_method_status dummy_init( - bt_self_component_sink *component, +bt_component_class_initialize_method_status dummy_init( + bt_self_component_sink *self_comp_sink, + bt_self_component_sink_configuration *config, const bt_value *params, __attribute__((unused)) void *init_method_data) { - bt_component_class_init_method_status status = - BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK; + bt_self_component *self_comp = + bt_self_component_sink_as_self_component(self_comp_sink); + const bt_component *comp = bt_self_component_as_component(self_comp); + bt_logging_level log_level = bt_component_get_logging_level(comp); + bt_component_class_initialize_method_status status; bt_self_component_add_port_status add_port_status; struct dummy *dummy = g_new0(struct dummy, 1); + enum bt_param_validation_status validation_status; + gchar *validate_error = NULL; if (!dummy) { - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto end; } - add_port_status = bt_self_component_sink_add_input_port(component, - "in", NULL, NULL); - switch (add_port_status) { - case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR; + validation_status = bt_param_validation_validate(params, + dummy_params, &validate_error); + if (validation_status == BT_PARAM_VALIDATION_STATUS_MEMORY_ERROR) { + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; - case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; + } else if (validation_status == BT_PARAM_VALIDATION_STATUS_VALIDATION_ERROR) { + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR; + BT_COMP_LOGE_APPEND_CAUSE(self_comp, "%s", validate_error); + goto error; + } + + add_port_status = bt_self_component_sink_add_input_port(self_comp_sink, + "in", NULL, NULL); + if (add_port_status != BT_SELF_COMPONENT_ADD_PORT_STATUS_OK) { + status = (int) add_port_status; goto error; - default: - break; } - bt_self_component_set_data( - bt_self_component_sink_as_self_component(component), dummy); + bt_self_component_set_data(self_comp, dummy); + + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK; goto end; error: destroy_private_dummy_data(dummy); end: + g_free(validate_error); + return status; } @@ -91,25 +115,28 @@ BT_HIDDEN bt_component_class_sink_graph_is_configured_method_status dummy_graph_is_configured( bt_self_component_sink *comp) { - bt_component_class_sink_graph_is_configured_method_status status = - BT_COMPONENT_CLASS_SINK_GRAPH_IS_CONFIGURED_METHOD_STATUS_OK; + bt_component_class_sink_graph_is_configured_method_status status; + bt_self_component_port_input_message_iterator_create_from_sink_component_status + msg_iter_status; struct dummy *dummy; bt_self_component_port_input_message_iterator *iterator; dummy = bt_self_component_get_data( bt_self_component_sink_as_self_component(comp)); BT_ASSERT(dummy); - iterator = bt_self_component_port_input_message_iterator_create_from_sink_component( + msg_iter_status = bt_self_component_port_input_message_iterator_create_from_sink_component( comp, bt_self_component_sink_borrow_input_port_by_name(comp, - in_port_name)); - if (!iterator) { - status = BT_COMPONENT_CLASS_SINK_GRAPH_IS_CONFIGURED_METHOD_STATUS_MEMORY_ERROR; + in_port_name), &iterator); + if (msg_iter_status != BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK) { + status = (int) msg_iter_status; goto end; } BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_MOVE_REF( dummy->msg_iter, iterator); + status = BT_COMPONENT_CLASS_SINK_GRAPH_IS_CONFIGURED_METHOD_STATUS_OK; + end: return status; }