]> code.delx.au - pulseaudio/blob - src/pulsecore/dbus-common.h
dbus-common: Implement infrastructure for registering D-Bus objects on all
[pulseaudio] / src / pulsecore / dbus-common.h
1 #ifndef foodbuscommonhfoo
2 #define foodbuscommonhfoo
3
4 /***
5 This file is part of PulseAudio.
6
7 Copyright 2009 Tanu Kaskinen
8
9 PulseAudio is free software; you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published
11 by the Free Software Foundation; either version 2.1 of the License,
12 or (at your option) any later version.
13
14 PulseAudio is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with PulseAudio; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 USA.
23 ***/
24
25 #include <dbus/dbus.h>
26
27 #include <pulsecore/core.h>
28 #include <pulsecore/macro.h>
29
30 #define PA_DBUS_DEFAULT_PORT 24883
31 #define PA_DBUS_SOCKET_NAME "dbus_socket"
32
33 #define PA_DBUS_SYSTEM_SOCKET_PATH PA_SYSTEM_RUNTIME_PATH PA_PATH_SEP PA_DBUS_SOCKET_NAME
34
35 /* NOTE: These functions may only be called from the main thread. */
36
37 /* Returns the default address of the server type in the escaped form. For
38 * PA_SERVER_TYPE_NONE an empty string is returned. The caller frees the
39 * string. This function may fail in some rare cases, in which case NULL is
40 * returned. */
41 char *pa_get_dbus_address_from_server_type(pa_server_type_t server_type);
42
43 /* Registers the given interface to the given object path. This is additive: it
44 * doesn't matter whether or not the object has already been registered; if it
45 * is, then its interface set is just extended.
46 *
47 * Introspection requests are handled automatically. For that to work, the
48 * caller gives an XML snippet containing the interface introspection element.
49 * All interface snippets are automatically combined to provide the final
50 * introspection string.
51 *
52 * The introspection snippet contains the interface name and the methods, but
53 * since this function doesn't do XML parsing, the interface name and the set
54 * of method names have to be supplied separately. If the interface doesn't
55 * contain any methods, NULL may be given as the methods parameter, otherwise
56 * the methods parameter must be a NULL-terminated array of strings.
57 *
58 * Fails and returns a negative number if the object already has the interface
59 * registered. */
60 int pa_dbus_add_interface(pa_core *c, const char* path, const char* interface, const char * const *methods, const char* introspection_snippet, DBusObjectPathMessageFunction receive_cb, void *userdata);
61
62 /* Returns a negative number if the given object doesn't have the given
63 * interface registered. */
64 int pa_dbus_remove_interface(pa_core *c, const char* path, const char* interface);
65
66 /* Fails and returns a negative number if the connection is already
67 * registered. */
68 int pa_dbus_register_connection(pa_core *c, DBusConnection *conn);
69
70 /* Returns a negative number if the connection wasn't registered. */
71 int pa_dbus_unregister_connection(pa_core *c, DBusConnection *conn);
72
73 #endif