From 346df6cf468fedfc119067f774a78b9ac912a326 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 23 Feb 2017 09:36:05 -0500 Subject: [PATCH] Return component port counts by parameter MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The rest of the API separates the return of success/error from the return of the item count. This change makes the component API consistent with the style used elsewhere. Signed-off-by: Jérémie Galarneau --- .../babeltrace/component/component-filter.h | 8 ++-- include/babeltrace/component/component-sink.h | 4 +- .../babeltrace/component/component-source.h | 5 +- lib/component/filter.c | 30 ++++++------ lib/component/graph.c | 46 +++++++++---------- lib/component/sink.c | 15 +++--- lib/component/source.c | 15 +++--- 7 files changed, 63 insertions(+), 60 deletions(-) diff --git a/include/babeltrace/component/component-filter.h b/include/babeltrace/component/component-filter.h index 08dde198..cda188eb 100644 --- a/include/babeltrace/component/component-filter.h +++ b/include/babeltrace/component/component-filter.h @@ -38,8 +38,8 @@ struct bt_port; struct bt_component; struct bt_notification_iterator; -extern int bt_component_filter_get_input_port_count( - struct bt_component *component); +extern enum bt_component_status bt_component_filter_get_input_port_count( + struct bt_component *component, uint64_t *count); extern struct bt_port *bt_component_filter_get_input_port( struct bt_component *component, const char *name); extern struct bt_port *bt_component_filter_get_input_port_at_index( @@ -47,8 +47,8 @@ extern struct bt_port *bt_component_filter_get_input_port_at_index( extern struct bt_port *bt_component_filter_get_default_input_port( struct bt_component *component); -extern int bt_component_filter_get_output_port_count( - struct bt_component *component); +extern enum bt_component_status bt_component_filter_get_output_port_count( + struct bt_component *component, uint64_t *count); extern struct bt_port *bt_component_filter_get_output_port( struct bt_component *component, const char *name); extern struct bt_port *bt_component_filter_get_output_port_at_index( diff --git a/include/babeltrace/component/component-sink.h b/include/babeltrace/component/component-sink.h index ff79c09e..d9072c3b 100644 --- a/include/babeltrace/component/component-sink.h +++ b/include/babeltrace/component/component-sink.h @@ -36,8 +36,8 @@ extern "C" { struct bt_component; struct bt_notification; -extern int bt_component_sink_get_input_port_count( - struct bt_component *component); +extern enum bt_component_status bt_component_sink_get_input_port_count( + struct bt_component *component, uint64_t *count); extern struct bt_port *bt_component_sink_get_input_port( struct bt_component *component, const char *name); extern struct bt_port *bt_component_sink_get_input_port_at_index( diff --git a/include/babeltrace/component/component-source.h b/include/babeltrace/component/component-source.h index 7bea78da..628786c3 100644 --- a/include/babeltrace/component/component-source.h +++ b/include/babeltrace/component/component-source.h @@ -37,9 +37,8 @@ extern "C" { struct bt_component; struct bt_notification_iterator; -/* FIXME should return a bt_component_status, same applies for filter and sink. Use uint64_t. */ -extern int bt_component_source_get_output_port_count( - struct bt_component *component); +extern enum bt_component_status bt_component_source_get_output_port_count( + struct bt_component *component, uint64_t *count); extern struct bt_port *bt_component_source_get_output_port( struct bt_component *component, const char *name); extern struct bt_port *bt_component_source_get_output_port_at_index( diff --git a/lib/component/filter.c b/lib/component/filter.c index da59cc21..8abd5a6d 100644 --- a/lib/component/filter.c +++ b/lib/component/filter.c @@ -127,25 +127,26 @@ end: return ret; } -int bt_component_filter_get_input_port_count(struct bt_component *component) +enum bt_component_status bt_component_filter_get_input_port_count( + struct bt_component *component, uint64_t *count) { - int ret; + enum bt_component_status status = BT_COMPONENT_STATUS_OK; struct bt_component_filter *filter; - if (!component) { - ret = -1; + if (!component || !count) { + status = BT_COMPONENT_STATUS_INVALID; goto end; } if (component->class->type != BT_COMPONENT_CLASS_TYPE_FILTER) { - ret = -1; + status = BT_COMPONENT_STATUS_INVALID; goto end; } filter = container_of(component, struct bt_component_filter, parent); - ret = filter->input_ports->len; + *count = (uint64_t) filter->input_ports->len; end: - return ret; + return status; } struct bt_port *bt_component_filter_get_input_port( @@ -227,25 +228,26 @@ end: return status; } -int bt_component_filter_get_output_port_count(struct bt_component *component) +enum bt_component_status bt_component_filter_get_output_port_count( + struct bt_component *component, uint64_t *count) { - int ret; + enum bt_component_status status = BT_COMPONENT_STATUS_OK; struct bt_component_filter *filter; - if (!component) { - ret = -1; + if (!component || !count) { + status = BT_COMPONENT_STATUS_INVALID; goto end; } if (component->class->type != BT_COMPONENT_CLASS_TYPE_FILTER) { - ret = -1; + status = BT_COMPONENT_STATUS_INVALID; goto end; } filter = container_of(component, struct bt_component_filter, parent); - ret = filter->output_ports->len; + *count = (uint64_t) filter->output_ports->len; end: - return ret; + return status; } struct bt_port *bt_component_filter_get_output_port( diff --git a/lib/component/graph.c b/lib/component/graph.c index 4d6c2802..d0ce1dfb 100644 --- a/lib/component/graph.c +++ b/lib/component/graph.c @@ -189,44 +189,44 @@ error: } static -int get_component_port_counts(struct bt_component *component, int *input_count, - int *output_count) +enum bt_component_status get_component_port_counts( + struct bt_component *component, uint64_t *input_count, + uint64_t *output_count) { - int ret = -1; + enum bt_component_status ret; switch (bt_component_get_class_type(component)) { case BT_COMPONENT_CLASS_TYPE_SOURCE: - ret = bt_component_source_get_output_port_count(component); - if (ret < 0) { + ret = bt_component_source_get_output_port_count(component, + output_count); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - *output_count = ret; break; case BT_COMPONENT_CLASS_TYPE_FILTER: - ret = bt_component_filter_get_output_port_count(component); - if (ret < 0) { + ret = bt_component_filter_get_output_port_count(component, + output_count); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - *output_count = ret; - break; - ret = bt_component_filter_get_input_port_count(component); - if (ret < 0) { + ret = bt_component_filter_get_input_port_count(component, + input_count); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - *input_count = ret; break; case BT_COMPONENT_CLASS_TYPE_SINK: - ret = bt_component_sink_get_input_port_count(component); - if (ret < 0) { + ret = bt_component_sink_get_input_port_count(component, + input_count); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - *input_count = ret; break; default: assert(false); break; } - ret = 0; + ret = BT_COMPONENT_STATUS_OK; end: return ret; } @@ -275,10 +275,10 @@ enum bt_graph_status bt_graph_add_component_as_sibling(struct bt_graph *graph, struct bt_component *origin, struct bt_component *new_component) { - int origin_input_port_count = 0; - int origin_output_port_count = 0; - int new_input_port_count = 0; - int new_output_port_count = 0; + uint64_t origin_input_port_count = 0; + uint64_t origin_output_port_count = 0; + uint64_t new_input_port_count = 0; + uint64_t new_output_port_count = 0; enum bt_graph_status status = BT_GRAPH_STATUS_OK; struct bt_graph *origin_graph = NULL; struct bt_graph *new_graph = NULL; @@ -314,12 +314,12 @@ enum bt_graph_status bt_graph_add_component_as_sibling(struct bt_graph *graph, } if (get_component_port_counts(origin, &origin_input_port_count, - &origin_output_port_count)) { + &origin_output_port_count) != BT_COMPONENT_STATUS_OK) { status = BT_GRAPH_STATUS_INVALID; goto end; } if (get_component_port_counts(new_component, &new_input_port_count, - &new_output_port_count)) { + &new_output_port_count) != BT_COMPONENT_STATUS_OK) { status = BT_GRAPH_STATUS_INVALID; goto end; } diff --git a/lib/component/sink.c b/lib/component/sink.c index e6c890c6..e516d325 100644 --- a/lib/component/sink.c +++ b/lib/component/sink.c @@ -163,25 +163,26 @@ end: } */ -int bt_component_sink_get_input_port_count(struct bt_component *component) +enum bt_component_status bt_component_sink_get_input_port_count( + struct bt_component *component, uint64_t *count) { - int ret; + enum bt_component_status status = BT_COMPONENT_STATUS_OK; struct bt_component_sink *sink; - if (!component) { - ret = -1; + if (!component || !count) { + status = BT_COMPONENT_STATUS_INVALID; goto end; } if (component->class->type != BT_COMPONENT_CLASS_TYPE_SINK) { - ret = -1; + status = BT_COMPONENT_STATUS_INVALID; goto end; } sink = container_of(component, struct bt_component_sink, parent); - ret = sink->input_ports->len; + *count = (uint64_t) sink->input_ports->len; end: - return ret; + return status; } struct bt_port *bt_component_sink_get_input_port( diff --git a/lib/component/source.c b/lib/component/source.c index e0c717b3..8b5de6b6 100644 --- a/lib/component/source.c +++ b/lib/component/source.c @@ -116,25 +116,26 @@ struct bt_notification_iterator *bt_component_source_create_notification_iterato return bt_component_create_iterator(component, init_method_data); } -int bt_component_source_get_output_port_count(struct bt_component *component) +enum bt_component_status bt_component_source_get_output_port_count( + struct bt_component *component, uint64_t *count) { - int ret; + enum bt_component_status status = BT_COMPONENT_STATUS_OK; struct bt_component_source *source; - if (!component) { - ret = -1; + if (!component || !count) { + status = BT_COMPONENT_STATUS_INVALID; goto end; } if (component->class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) { - ret = -1; + status = BT_COMPONENT_STATUS_INVALID; goto end; } source = container_of(component, struct bt_component_source, parent); - ret = source->output_ports->len; + *count = (uint64_t) source->output_ports->len; end: - return ret; + return status; } struct bt_port *bt_component_source_get_output_port( -- 2.34.1