From 8f4799f74ca7304ef5f6cf0d30ae84039fb892fc Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Tue, 28 Mar 2017 19:09:31 -0400 Subject: [PATCH] Accept port connection method: take other port as parameter MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This can be useful, as we already have it at this point when calling the method, to inspect the other port and its component. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- include/babeltrace/component/component-class.h | 4 +++- include/babeltrace/component/component-internal.h | 3 ++- lib/component/component.c | 9 ++++++--- lib/component/graph.c | 4 ++-- plugins/text/text.c | 3 ++- plugins/utils/dummy/dummy.c | 4 +++- plugins/utils/dummy/dummy.h | 4 +++- plugins/writer/writer.c | 3 ++- 8 files changed, 23 insertions(+), 11 deletions(-) diff --git a/include/babeltrace/component/component-class.h b/include/babeltrace/component/component-class.h index f4761bea..774d8095 100644 --- a/include/babeltrace/component/component-class.h +++ b/include/babeltrace/component/component-class.h @@ -36,6 +36,7 @@ struct bt_component_class; struct bt_component; struct bt_private_component; struct bt_private_port; +struct bt_port; struct bt_value; struct bt_private_notification_iterator; @@ -88,7 +89,8 @@ typedef struct bt_value *(*bt_component_class_query_method)( typedef enum bt_component_status (*bt_component_class_accept_port_connection_method)( struct bt_private_component *private_component, - struct bt_private_port *private_port); + struct bt_private_port *self_private_port, + struct bt_port *other_port); typedef void (*bt_component_class_port_disconnected_method)( struct bt_private_component *private_component, diff --git a/include/babeltrace/component/component-internal.h b/include/babeltrace/component/component-internal.h index c12b3b36..744fb0d3 100644 --- a/include/babeltrace/component/component-internal.h +++ b/include/babeltrace/component/component-internal.h @@ -79,7 +79,8 @@ struct bt_private_component *bt_private_component_from_component( BT_HIDDEN enum bt_component_status bt_component_accept_port_connection( - struct bt_component *component, struct bt_port *self_port); + struct bt_component *component, struct bt_port *self_port, + struct bt_port *other_port); BT_HIDDEN void bt_component_port_disconnected(struct bt_component *comp, diff --git a/lib/component/component.c b/lib/component/component.c index 9a239754..456175ff 100644 --- a/lib/component/component.c +++ b/lib/component/component.c @@ -534,17 +534,20 @@ end: BT_HIDDEN enum bt_component_status bt_component_accept_port_connection( - struct bt_component *comp, struct bt_port *port) + struct bt_component *comp, struct bt_port *self_port, + struct bt_port *other_port) { enum bt_component_status status = BT_COMPONENT_STATUS_OK; assert(comp); - assert(port); + assert(self_port); + assert(other_port); if (comp->class->methods.accept_port_connection) { status = comp->class->methods.accept_port_connection( bt_private_component_from_component(comp), - bt_private_port_from_port(port)); + bt_private_port_from_port(self_port), + other_port); } return status; diff --git a/lib/component/graph.c b/lib/component/graph.c index 8e21e1a3..e16a1314 100644 --- a/lib/component/graph.c +++ b/lib/component/graph.c @@ -256,12 +256,12 @@ struct bt_connection *bt_graph_connect(struct bt_graph *graph, * invocation. */ component_status = bt_component_accept_port_connection( - upstream_component, upstream_port); + upstream_component, upstream_port, downstream_port); if (component_status != BT_COMPONENT_STATUS_OK) { goto error_rollback; } component_status = bt_component_accept_port_connection( - downstream_component, downstream_port); + downstream_component, downstream_port, upstream_port); if (component_status != BT_COMPONENT_STATUS_OK) { goto error_rollback; } diff --git a/plugins/text/text.c b/plugins/text/text.c index ecd6bbea..5f833fe5 100644 --- a/plugins/text/text.c +++ b/plugins/text/text.c @@ -163,7 +163,8 @@ end: static enum bt_component_status text_accept_port_connection( struct bt_private_component *component, - struct bt_private_port *self_port) + struct bt_private_port *self_port, + struct bt_port *other_port) { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; struct bt_private_connection *connection; diff --git a/plugins/utils/dummy/dummy.c b/plugins/utils/dummy/dummy.c index 3487b6e7..23db9d32 100644 --- a/plugins/utils/dummy/dummy.c +++ b/plugins/utils/dummy/dummy.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -82,7 +83,8 @@ error: enum bt_component_status dummy_accept_port_connection( struct bt_private_component *component, - struct bt_private_port *self_port) + struct bt_private_port *self_port, + struct bt_port *other_port) { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; struct dummy *dummy; diff --git a/plugins/utils/dummy/dummy.h b/plugins/utils/dummy/dummy.h index 4800d4ff..f2133229 100644 --- a/plugins/utils/dummy/dummy.h +++ b/plugins/utils/dummy/dummy.h @@ -26,6 +26,7 @@ #include #include #include +#include struct dummy { GPtrArray *iterators; @@ -36,7 +37,8 @@ enum bt_component_status dummy_init(struct bt_private_component *component, void dummy_destroy(struct bt_private_component *component); enum bt_component_status dummy_accept_port_connection( struct bt_private_component *component, - struct bt_private_port *own_port); + struct bt_private_port *self_port, + struct bt_port *other_port); enum bt_component_status dummy_consume(struct bt_private_component *component); #endif /* BABELTRACE_PLUGINS_UTILS_DUMMY_H */ diff --git a/plugins/writer/writer.c b/plugins/writer/writer.c index 360d0d68..6d06468f 100644 --- a/plugins/writer/writer.c +++ b/plugins/writer/writer.c @@ -189,7 +189,8 @@ end: static enum bt_component_status writer_component_accept_port_connection( struct bt_private_component *component, - struct bt_private_port *self_port) + struct bt_private_port *self_port, + struct bt_port *other_port) { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; struct bt_private_connection *connection; -- 2.34.1