From 7d62a2ab12a4bdd6b67dd0c2de4246c116be991e Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Sun, 16 Jul 2017 20:51:02 -0400 Subject: [PATCH] lib: use `enum bt_port_status` where possible MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- include/babeltrace/graph/port.h | 2 +- include/babeltrace/graph/private-port.h | 2 +- lib/graph/port.c | 30 +++++++++++++++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/include/babeltrace/graph/port.h b/include/babeltrace/graph/port.h index ebe33e55..d08e2747 100644 --- a/include/babeltrace/graph/port.h +++ b/include/babeltrace/graph/port.h @@ -53,7 +53,7 @@ extern const char *bt_port_get_name(struct bt_port *port); extern enum bt_port_type bt_port_get_type(struct bt_port *port); extern struct bt_connection *bt_port_get_connection(struct bt_port *port); extern struct bt_component *bt_port_get_component(struct bt_port *port); -extern int bt_port_disconnect(struct bt_port *port); +extern enum bt_port_status bt_port_disconnect(struct bt_port *port); extern bt_bool bt_port_is_connected(struct bt_port *port); static inline diff --git a/include/babeltrace/graph/private-port.h b/include/babeltrace/graph/private-port.h index 8148f0a4..e228594c 100644 --- a/include/babeltrace/graph/private-port.h +++ b/include/babeltrace/graph/private-port.h @@ -37,7 +37,7 @@ extern struct bt_private_connection *bt_private_port_get_private_connection( struct bt_private_port *private_port); extern struct bt_private_component *bt_private_port_get_private_component( struct bt_private_port *private_port); -extern int bt_private_port_remove_from_component( +extern enum bt_port_status bt_private_port_remove_from_component( struct bt_private_port *private_port); extern void *bt_private_port_get_user_data( struct bt_private_port *private_port); diff --git a/lib/graph/port.c b/lib/graph/port.c index 944e1cd4..60f88a33 100644 --- a/lib/graph/port.c +++ b/lib/graph/port.c @@ -169,36 +169,48 @@ void bt_port_set_connection(struct bt_port *port, port, bt_port_get_name(port), connection); } -int bt_private_port_remove_from_component( +enum bt_port_status bt_private_port_remove_from_component( struct bt_private_port *private_port) { - int ret = 0; + enum bt_port_status status = BT_PORT_STATUS_OK; struct bt_port *port = bt_port_from_private(private_port); struct bt_component *comp = NULL; + enum bt_component_status comp_status; if (!port) { BT_LOGW_STR("Invalid parameter: private port is NULL."); - ret = -1; + status = BT_PORT_STATUS_INVALID; goto end; } comp = (void *) bt_object_get_parent(port); + if (!comp) { + BT_LOGV("Port already removed from its component: " + "port-addr=%p, port-name=\"%s\", ", + port, bt_port_get_name(port)); + goto end; + } /* bt_component_remove_port() logs details */ - ret = bt_component_remove_port(comp, port); + comp_status = bt_component_remove_port(comp, port); + assert(comp_status != BT_COMPONENT_STATUS_INVALID); + if (comp_status < 0) { + status = BT_PORT_STATUS_ERROR; + goto end; + } end: bt_put(comp); - return ret; + return status; } -int bt_port_disconnect(struct bt_port *port) +enum bt_port_status bt_port_disconnect(struct bt_port *port) { - int ret = 0; + enum bt_port_status status = BT_PORT_STATUS_OK; if (!port) { BT_LOGW_STR("Invalid parameter: port is NULL."); - ret = -1; + status = BT_PORT_STATUS_INVALID; goto end; } @@ -210,7 +222,7 @@ int bt_port_disconnect(struct bt_port *port) } end: - return ret; + return status; } bt_bool bt_port_is_connected(struct bt_port *port) -- 2.34.1