X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Futils%2Fdummy%2Fdummy.c;h=703535e7707754d4841dcddab9da4d7d04375fb3;hb=929627965e33e06dc77254d81e8ec1d66cc06590;hp=2d0c6aa4a15c86a29c56425da35312cdf402b255;hpb=9e632b22e1310fe773edc32ab08a60602f4b2861;p=babeltrace.git diff --git a/src/plugins/utils/dummy/dummy.c b/src/plugins/utils/dummy/dummy.c index 2d0c6aa4..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,44 +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_initialize_method_status dummy_init( - bt_self_component_sink *component, + 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_initialize_method_status status = - BT_COMPONENT_CLASS_INITIALIZE_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_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: + 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; + } 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; - case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR: - status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_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; }