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>
enum bt_port_type type;
GString *name;
struct bt_connection *connection;
+ void *user_data;
};
static inline
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
}
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;
+}