WpPermissionManager
-
struct WpPermissionManager
The WpPermissionManager class is in charge of updating automatically permissions on interested objects every time they are added or removed for a particular client.
WpPermissionManager API.
-
enum WpPermissionManagerFeatures
Flags to be used as WpObjectFeatures for WpPermissionManager.
Values:
-
enumerator WP_PERMISSION_MANAGER_LOADED = (1 << 0)
Loads the permission manager
-
enumerator WP_PERMISSION_MANAGER_LOADED = (1 << 0)
-
typedef guint32 (*WpPermissionMatchCallback)(WpPermissionManager *self, WpClient *client, WpGlobalProxy *object, gpointer user_data)
callback to set permissions on the matched global object
- Param self:
the permission manager
- Param client:
the client that will have its permissions updated
- Param object:
the matched global
- Param user_data:
the passed data
-
WpPermissionManager *wp_permission_manager_new(WpCore *core)
Creates a new WpPermissionManager object.
- Parameters:
core -- the WpCore
- Returns:
(transfer full): a new WpPermissionManager object
-
void wp_permission_manager_set_default_permissions(WpPermissionManager *self, guint32 permissions)
Sets the default permissions that will be applied to all objects that don't match any interest.
- Parameters:
self -- the permission manager
permissions -- the default permissions to apply
-
void wp_permission_manager_set_core_permissions(WpPermissionManager *self, guint32 permissions)
Sets the permissions that will be applied to the core object (ID 0).
The core object is not visible to the permission manager's object manager because it is implicit in the PipeWire connection and not sent through the registry. This method allows setting explicit permissions on it, independent of the default permissions.
If not set (or set to PW_PERM_INVALID), the core inherits default_permissions.
- Parameters:
self -- the permission manager
permissions -- the permissions to apply to the core object
-
guint32 wp_permission_manager_add_interest_match(WpPermissionManager *self, WpPermissionMatchCallback callback, gpointer user_data, WpObjectInterest *interest)
Adds an interest match to apply permissions with callback in matched objects.
Interest consists of a GType that the object must be an ancestor of (g_type_is_a() must match) and optionally, a set of additional constraints on certain properties of the object. Refer to WpObjectInterest for more details.
- Parameters:
self -- the permission manager
callback -- (scope async): the permissions match callback
user_data -- data to pass to callback
interest -- (transfer full): the interest
- Returns:
the added match ID, or SPA_ID_INVALID if error
-
guint32 wp_permission_manager_add_interest_match_closure(WpPermissionManager *self, GClosure *closure, WpObjectInterest *interest)
Adds an interest match to apply permissions with closure in matched objects.
Interest consists of a GType that the object must be an ancestor of (g_type_is_a() must match) and optionally, a set of additional constraints on certain properties of the object. Refer to WpObjectInterest for more details.
- Parameters:
self -- the permission manager
closure -- (transfer full): the closure to apply permissions
interest -- (transfer full): the interest
- Returns:
the added match ID, or SPA_ID_INVALID if error
-
guint32 wp_permission_manager_add_interest_match_simple(WpPermissionManager *self, guint32 permissions, WpObjectInterest *interest)
Adds an interest match to apply same permissions in matched objects.
Interest consists of a GType that the object must be an ancestor of (g_type_is_a() must match) and optionally, a set of additional constraints on certain properties of the object. Refer to WpObjectInterest for more details.
- Parameters:
self -- the permission manager
permissions -- the permissions to apply
interest -- (transfer full): the interest
- Returns:
the added match ID, or SPA_ID_INVALID if error
-
guint32 wp_permission_manager_add_rules_match(WpPermissionManager *self, WpSpaJson *rules)
Adds a rules match to apply permissions in matched objects.
The rules must be defined in a JSON object using the same format as all the wireplumber/pipewire rules.
- Parameters:
self -- the permission manager
rules -- (transfer full): the JSON rules
- Returns:
the added match ID, or SPA_ID_INVALID if error
-
void wp_permission_manager_remove_match(WpPermissionManager *self, guint32 match_id)
Removes the previously added match so that the associated permissions are not applied anymore.
- Parameters:
self -- the permission manager
match_id -- the match ID to remove
-
void wp_permission_manager_update_permissions(WpPermissionManager *self)
Updates permissions on all clients the permission manager has.
The permission manager already updates permissions on all clients automatically when a new client or object is added, however, this might be needed if interests with closures or callbacks were added and something changed externally.
- Parameters:
self -- the permission manager
-
WP_TYPE_PERMISSION_MANAGER (wp_permission_manager_get_type ())
The WpPermissionManager GType.