PipeWire 1.6.5

Loading...
Searching...
No Matches
dbus.h
Go to the documentation of this file.
1/* Simple Plugin API */
2/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
3/* SPDX-License-Identifier: MIT */
4
5#ifndef SPA_DBUS_H
6#define SPA_DBUS_H
7
8#include <spa/support/loop.h>
9
10#ifdef __cplusplus
11 extern "C" {
12#endif
13
14#ifndef SPA_API_DBUS
15 #ifdef SPA_API_IMPL
16 #define SPA_API_DBUS SPA_API_IMPL
17 #else
18 #define SPA_API_DBUS static inline
19 #endif
20#endif
21
25
30
31#define SPA_TYPE_INTERFACE_DBus SPA_TYPE_INFO_INTERFACE_BASE "DBus"
32
33#define SPA_VERSION_DBUS 0
34 struct spa_dbus { struct spa_interface iface; };
35
36 enum spa_dbus_type {
37 SPA_DBUS_TYPE_SESSION,
38 SPA_DBUS_TYPE_SYSTEM,
39 SPA_DBUS_TYPE_STARTER
40};
41
42#define SPA_DBUS_CONNECTION_EVENT_DESTROY 0
43#define SPA_DBUS_CONNECTION_EVENT_DISCONNECTED 1
44#define SPA_DBUS_CONNECTION_EVENT_NUM 2
45
46 struct spa_dbus_connection_events {
47#define SPA_VERSION_DBUS_CONNECTION_EVENTS 0
48 uint32_t version;
49
50 /* a connection is destroyed */
51 void (*destroy) (void *data);
52
53 /* a connection disconnected */
54 void (*disconnected) (void *data);
55};
56
57 struct spa_dbus_connection {
58#define SPA_VERSION_DBUS_CONNECTION 1
59 uint32_t version;
69
70 */
71 void *(*get) (struct spa_dbus_connection *conn);
77 void (*destroy) (struct spa_dbus_connection *conn);
78
84 void (*add_listener) (struct spa_dbus_connection *conn,
85 struct spa_hook *listener,
86 const struct spa_dbus_connection_events *events,
87 void *data);
88};
89
92 SPA_API_DBUS void *spa_dbus_connection_get(struct spa_dbus_connection *conn)
93{
94 return spa_api_func_r(void *, NULL, conn, get, 0);
95}
98 SPA_API_DBUS void spa_dbus_connection_destroy(struct spa_dbus_connection *conn)
99{
100 spa_api_func_v(conn, destroy, 0);
101}
103
104 SPA_API_DBUS void spa_dbus_connection_add_listener(struct spa_dbus_connection *conn,
105 struct spa_hook *listener,
106 const struct spa_dbus_connection_events *events,
107 void *data)
108{
109 spa_api_func_v(conn, add_listener, 1, listener, events, data);
110}
111
112 struct spa_dbus_methods {
113#define SPA_VERSION_DBUS_METHODS 0
114 uint32_t version;
115
116
118 *
119 * The connection wrapper is completely configured to operate
120 * in the main context of the handle that manages the spa_dbus
121 * interface.
122 *
123 * \param dbus the dbus manager
124 * \param type the bus type to wrap
125 * \param error location for the DBusError
126 * \return a new dbus connection wrapper or NULL on error
127 */
128 struct spa_dbus_connection * (*get_connection) (void *object,
129 enum spa_dbus_type type);
130};
131
135 SPA_API_DBUS struct spa_dbus_connection *
136 spa_dbus_get_connection(struct spa_dbus *dbus, enum spa_dbus_type type)
137{
138 return spa_api_method_r(struct spa_dbus_connection *, NULL,
139 spa_dbus, &dbus->iface, get_connection, 0, type);
140}
141
145
146#ifdef __cplusplus
147} /* extern "C" */
148#endif
149
150#endif /* SPA_DBUS_H */
SPA_API_DBUS
#define SPA_API_DBUS
Definition dbus.h:25
spa_dbus_type
spa_dbus_type
Definition dbus.h:45
spa_dbus_connection_destroy
SPA_API_DBUS void spa_dbus_connection_destroy(struct spa_dbus_connection *conn)
Destroy a dbus connection wrapper.
Definition dbus.h:112
spa_dbus_connection_get
SPA_API_DBUS void * spa_dbus_connection_get(struct spa_dbus_connection *conn)
Get the DBusConnection from a wrapper.
Definition dbus.h:106
spa_dbus_get_connection
SPA_API_DBUS struct spa_dbus_connection * spa_dbus_get_connection(struct spa_dbus *dbus, enum spa_dbus_type type)
Get a new connection wrapper for the given bus type.
Definition dbus.h:151
spa_dbus_connection_add_listener
SPA_API_DBUS void spa_dbus_connection_add_listener(struct spa_dbus_connection *conn, struct spa_hook *listener, const struct spa_dbus_connection_events *events, void *data)
Add a listener for events.
Definition dbus.h:118
SPA_DBUS_TYPE_SESSION
@ SPA_DBUS_TYPE_SESSION
The login session bus.
Definition dbus.h:46
SPA_DBUS_TYPE_STARTER
@ SPA_DBUS_TYPE_STARTER
The bus that started us, if any.
Definition dbus.h:48
SPA_DBUS_TYPE_SYSTEM
@ SPA_DBUS_TYPE_SYSTEM
The systemwide bus.
Definition dbus.h:47
spa_api_func_v
#define spa_api_func_v(o, method, version,...)
Definition hook.h:268
spa_api_method_r
#define spa_api_method_r(rtype, def, type, o, method, version,...)
Definition hook.h:291
spa_api_func_r
#define spa_api_func_r(rtype, def, o, method, version,...)
Definition hook.h:273
loop.h
spa/support/loop.h
spa_dbus_connection_events
Definition dbus.h:58
spa_dbus_connection_events::destroy
void(* destroy)(void *data)
Definition dbus.h:64
spa_dbus_connection_events::version
uint32_t version
Definition dbus.h:61
spa_dbus_connection_events::disconnected
void(* disconnected)(void *data)
Definition dbus.h:67
spa_dbus_connection
Definition dbus.h:70
spa_dbus_connection::destroy
void(* destroy)(struct spa_dbus_connection *conn)
Destroy a dbus connection wrapper.
Definition dbus.h:91
spa_dbus_connection::add_listener
void(* add_listener)(struct spa_dbus_connection *conn, struct spa_hook *listener, const struct spa_dbus_connection_events *events, void *data)
Add a listener for events.
Definition dbus.h:98
spa_dbus_connection::get
void *(* get)(struct spa_dbus_connection *conn)
Get the DBusConnection from a wrapper.
Definition dbus.h:85
spa_dbus_methods
Definition dbus.h:126
spa_dbus_methods::version
uint32_t version
Definition dbus.h:129
spa_dbus
Definition dbus.h:43
spa_dbus::iface
struct spa_interface iface
Definition dbus.h:43
spa_hook
A hook, contains the structure with functions and the data passed to the functions.
Definition hook.h:427
spa_interface
Definition hook.h:148