Skip to content
Snippets Groups Projects
Commit db40a593 authored by George Kiagiadakis's avatar George Kiagiadakis
Browse files

lib: implement WpObjectInterest

parent 70214fcd
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,7 @@ wp_lib_sources = files(
'link.c',
'module.c',
'node.c',
'object-interest.c',
'object-manager.c',
'policy.c',
'port.c',
......@@ -46,6 +47,7 @@ wp_lib_headers = files(
'link.h',
'module.h',
'node.h',
'object-interest.h',
'object-manager.h',
'policy.h',
'port.h',
......
This diff is collapsed.
/* WirePlumber
*
* Copyright © 2020 Collabora Ltd.
* @author George Kiagiadakis <george.kiagiadakis@collabora.com>
*
* SPDX-License-Identifier: MIT
*/
#ifndef __WIREPLUMBER_OBJECT_INTEREST_H__
#define __WIREPLUMBER_OBJECT_INTEREST_H__
#include <glib-object.h>
#include "defs.h"
#include "properties.h"
G_BEGIN_DECLS
/**
* WpConstraintType:
* @WP_CONSTRAINT_TYPE_NONE: invalid constraint type
* @WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY: constraint applies
* to a PipeWire global property of the object (the ones returned by
* wp_proxy_get_global_properties())
* @WP_CONSTRAINT_TYPE_PW_PROPERTY: constraint applies
* to a PipeWire property of the object (the ones returned by
* wp_proxy_get_properties())
* @WP_CONSTRAINT_TYPE_G_PROPERTY: constraint applies to a #GObject
* property of the object
*/
typedef enum {
WP_CONSTRAINT_TYPE_NONE = 0,
WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY,
WP_CONSTRAINT_TYPE_PW_PROPERTY,
WP_CONSTRAINT_TYPE_G_PROPERTY,
} WpConstraintType;
/**
* WpConstraintVerb:
* @WP_CONSTRAINT_VERB_EQUALS: `=` the subject's value must equal the
* constraint's value
* @WP_CONSTRAINT_VERB_IN_LIST: `c` the subject's value must equal at least
* one of the values in the list given as the constraint's value
* @WP_CONSTRAINT_VERB_IN_RANGE: `~` the subject's value must be a number
* in the range defined by the constraint's value
* @WP_CONSTRAINT_VERB_MATCHES: `#` the subject's value must match the
* pattern specified in the constraint's value
* @WP_CONSTRAINT_VERB_IS_PRESENT: `+` the subject property must exist
* @WP_CONSTRAINT_VERB_IS_ABSENT: `-` the subject property must not exist
*/
typedef enum {
WP_CONSTRAINT_VERB_EQUALS = '=',
WP_CONSTRAINT_VERB_IN_LIST = 'c',
WP_CONSTRAINT_VERB_IN_RANGE = '~',
WP_CONSTRAINT_VERB_MATCHES = '#',
WP_CONSTRAINT_VERB_IS_PRESENT = '+',
WP_CONSTRAINT_VERB_IS_ABSENT = '-',
} WpConstraintVerb;
/**
* WP_TYPE_OBJECT_INTEREST:
*
* The #WpObjectInterest #GType
*/
#define WP_TYPE_OBJECT_INTEREST (wp_object_interest_get_type ())
WP_API
GType wp_object_interest_get_type (void) G_GNUC_CONST;
typedef struct _WpObjectInterest WpObjectInterest;
WP_API
WpObjectInterest * wp_object_interest_new (GType gtype, ...) G_GNUC_NULL_TERMINATED;
WP_API
WpObjectInterest * wp_object_interest_new_valist (GType gtype, va_list * args);
WP_API
WpObjectInterest * wp_object_interest_new_type (GType gtype);
WP_API
void wp_object_interest_add_constraint (WpObjectInterest * self,
WpConstraintType type, const gchar * subject,
WpConstraintVerb verb, GVariant * value);
WP_API
WpObjectInterest * wp_object_interest_copy (WpObjectInterest * self);
WP_API
void wp_object_interest_free (WpObjectInterest * self);
WP_API
gboolean wp_object_interest_validate (WpObjectInterest * self, GError ** error);
WP_API
gboolean wp_object_interest_matches (WpObjectInterest * self, gpointer object);
WP_API
gboolean wp_object_interest_matches_full (WpObjectInterest * self,
GType object_type, gpointer object, WpProperties * pw_props,
WpProperties * pw_global_props);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpObjectInterest, wp_object_interest_free)
G_END_DECLS
#endif
......@@ -21,6 +21,7 @@
#include "link.h"
#include "module.h"
#include "node.h"
#include "object-interest.h"
#include "object-manager.h"
#include "policy.h"
#include "port.h"
......
......@@ -16,6 +16,13 @@ test(
env: common_env,
)
test(
'test-object-interest',
executable('test-object-interest', 'object-interest.c',
dependencies: common_deps, c_args: common_args),
env: common_env,
)
test(
'test-properties',
executable('test-properties', 'properties.c',
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment