X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Futils%2Fdummy%2Fdummy.c;h=703535e7707754d4841dcddab9da4d7d04375fb3;hb=929627965e33e06dc77254d81e8ec1d66cc06590;hp=a2a35cb9b7d0e3e9e25ee828203ab04fa0691c8f;hpb=f807570cabd54611b7a7d3e23023f68f23e1ff70;p=babeltrace.git diff --git a/src/plugins/utils/dummy/dummy.c b/src/plugins/utils/dummy/dummy.c index a2a35cb9..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,72 +53,104 @@ 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_self_component_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_self_component_status ret; + 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) { - ret = BT_SELF_COMPONENT_STATUS_NOMEM; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto end; } - ret = bt_self_component_sink_add_input_port(component, + 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; + } + + add_port_status = bt_self_component_sink_add_input_port(self_comp_sink, "in", NULL, NULL); - if (ret != BT_SELF_COMPONENT_STATUS_OK) { + if (add_port_status != BT_SELF_COMPONENT_ADD_PORT_STATUS_OK) { + status = (int) add_port_status; goto error; } - 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: - return ret; + g_free(validate_error); + + return status; } BT_HIDDEN -bt_self_component_status dummy_graph_is_configured( +bt_component_class_sink_graph_is_configured_method_status dummy_graph_is_configured( bt_self_component_sink *comp) { - bt_self_component_status status = BT_SELF_COMPONENT_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( - bt_self_component_sink_borrow_input_port_by_name(comp, - in_port_name)); - if (!iterator) { - status = BT_SELF_COMPONENT_STATUS_NOMEM; + 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), &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; } BT_HIDDEN -bt_self_component_status dummy_consume( +bt_component_class_sink_consume_method_status dummy_consume( bt_self_component_sink *component) { - bt_self_component_status ret = BT_SELF_COMPONENT_STATUS_OK; + bt_component_class_sink_consume_method_status status = + BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_OK; bt_message_array_const msgs; uint64_t count; struct dummy *dummy; - bt_message_iterator_status it_ret; + bt_message_iterator_next_status next_status; uint64_t i; dummy = bt_self_component_get_data( @@ -120,38 +158,38 @@ bt_self_component_status dummy_consume( BT_ASSERT(dummy); if (G_UNLIKELY(!dummy->msg_iter)) { - ret = BT_SELF_COMPONENT_STATUS_END; + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_END; goto end; } /* Consume one message */ - it_ret = bt_self_component_port_input_message_iterator_next( + next_status = bt_self_component_port_input_message_iterator_next( dummy->msg_iter, &msgs, &count); - switch (it_ret) { - case BT_MESSAGE_ITERATOR_STATUS_OK: - ret = BT_SELF_COMPONENT_STATUS_OK; + switch (next_status) { + case BT_MESSAGE_ITERATOR_NEXT_STATUS_OK: + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_OK; for (i = 0; i < count; i++) { bt_message_put_ref(msgs[i]); } break; - case BT_MESSAGE_ITERATOR_STATUS_AGAIN: - ret = BT_SELF_COMPONENT_STATUS_AGAIN; + case BT_MESSAGE_ITERATOR_NEXT_STATUS_AGAIN: + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_AGAIN; goto end; - case BT_MESSAGE_ITERATOR_STATUS_END: - ret = BT_SELF_COMPONENT_STATUS_END; + case BT_MESSAGE_ITERATOR_NEXT_STATUS_END: + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_END; goto end; - case BT_MESSAGE_ITERATOR_STATUS_ERROR: - ret = BT_SELF_COMPONENT_STATUS_ERROR; + case BT_MESSAGE_ITERATOR_NEXT_STATUS_ERROR: + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR; goto end; - case BT_MESSAGE_ITERATOR_STATUS_NOMEM: - ret = BT_SELF_COMPONENT_STATUS_NOMEM; + case BT_MESSAGE_ITERATOR_NEXT_STATUS_MEMORY_ERROR: + status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_MEMORY_ERROR; goto end; default: break; } end: - return ret; + return status; }