X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-sink-internal.h;h=3840bd509ae36356a54442d5c639802adf658bb6;hb=ad8474550bfc1968366fe45818c046fa5bc15581;hp=34c899c15ec5bbb94f606ed5ecc028e1a1614786;hpb=6c677fb54f458456e3b5a15cffa6774bd7a86f54;p=babeltrace.git diff --git a/include/babeltrace/graph/component-sink-internal.h b/include/babeltrace/graph/component-sink-internal.h index 34c899c1..3840bd50 100644 --- a/include/babeltrace/graph/component-sink-internal.h +++ b/include/babeltrace/graph/component-sink-internal.h @@ -28,6 +28,7 @@ */ #include +#include #include #include #include @@ -54,14 +55,31 @@ struct bt_component *bt_component_sink_create( BT_HIDDEN void bt_component_sink_destroy(struct bt_component *component); -/** - * Process one event, consuming from sources as needed. - * - * @param component Component instance - * @returns One of #bt_component_status values - */ -BT_HIDDEN +static inline enum bt_component_status bt_component_sink_consume( - struct bt_component *component); + struct bt_component *component) +{ + enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + struct bt_component_class_sink *sink_class = NULL; + + BT_ASSERT(component); + BT_ASSERT(bt_component_get_class_type(component) == + BT_COMPONENT_CLASS_TYPE_SINK); + sink_class = container_of(component->class, + struct bt_component_class_sink, parent); + BT_ASSERT(sink_class->methods.consume); + BT_LOGD("Calling user's consume method: " + "comp-addr=%p, comp-name=\"%s\"", + component, bt_component_get_name(component)); + ret = sink_class->methods.consume( + bt_private_component_from_component(component)); + BT_LOGD("User method returned: status=%s", + bt_component_status_string(ret)); + if (ret < 0) { + BT_LOGW_STR("Consume method failed."); + } + + return ret; +} #endif /* BABELTRACE_GRAPH_COMPONENT_SINK_INTERNAL_H */