Add user data for private port
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Wed, 29 Mar 2017 20:16:13 +0000 (16:16 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 28 May 2017 16:57:39 +0000 (12:57 -0400)
A private port belongs to a private component, so it's okay to set
custom user data within a port. The user must make sure to release the
private user data whatever happens. The easiest solution is to make
a port's private data owned by the component's private data.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
include/babeltrace/graph/port-internal.h
include/babeltrace/graph/private-port.h
lib/component/port.c

index 85d9d76bfa7ade1698f3900b8abe95f642a7a033..3a277674961139b7d96f48c36260e0ea9a1990f4 100644 (file)
@@ -38,6 +38,7 @@ struct bt_port {
        enum bt_port_type type;
        GString *name;
        struct bt_connection *connection;
+       void *user_data;
 };
 
 static inline
index 2f0e49db6705864bac9976a218f4cbc24672c8e0..1455369cd46555594a6b2172e6c8abf1a76bbd52 100644 (file)
@@ -39,6 +39,10 @@ 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(
                struct bt_private_port *private_port);
+extern int bt_private_port_set_user_data(
+               struct bt_private_port *private_port, void *user_data);
+extern void *bt_private_port_get_user_data(
+               struct bt_private_port *private_port);
 
 #ifdef __cplusplus
 }
index f1c5d1758bc9d6a38fb50b80b1646317b884fa5d..bb72b163dd6d64b3dfb4e35ede23dd26a17f2492 100644 (file)
@@ -187,3 +187,26 @@ int bt_port_is_connected(struct bt_port *port)
 end:
        return ret;
 }
+
+int bt_private_port_set_user_data(
+               struct bt_private_port *private_port, void *user_data)
+{
+       int ret = 0;
+
+       if (!private_port) {
+               ret = -1;
+               goto end;
+       }
+
+       bt_port_from_private(private_port)->user_data = user_data;
+
+end:
+       return ret;
+}
+
+void *bt_private_port_get_user_data(
+               struct bt_private_port *private_port)
+{
+       return private_port ?
+               bt_port_from_private(private_port)->user_data : NULL;
+}
This page took 0.027365 seconds and 4 git commands to generate.