1/* GDBus - GLib D-Bus Library
2 *
3 * Copyright (C) 2008-2010 Red Hat, Inc.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General
18 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
19 *
20 * Author: David Zeuthen <davidz@redhat.com>
21 */
22
23#ifndef __G_DBUS_NAME_WATCHING_H__
24#define __G_DBUS_NAME_WATCHING_H__
25
26#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
27#error "Only <gio/gio.h> can be included directly."
28#endif
29
30#include <gio/giotypes.h>
31
32G_BEGIN_DECLS
33
34/**
35 * GBusNameAppearedCallback:
36 * @connection: The #GDBusConnection the name is being watched on.
37 * @name: The name being watched.
38 * @name_owner: Unique name of the owner of the name being watched.
39 * @user_data: User data passed to g_bus_watch_name().
40 *
41 * Invoked when the name being watched is known to have to have an owner.
42 *
43 * Since: 2.26
44 */
45typedef void (*GBusNameAppearedCallback) (GDBusConnection *connection,
46 const gchar *name,
47 const gchar *name_owner,
48 gpointer user_data);
49
50/**
51 * GBusNameVanishedCallback:
52 * @connection: The #GDBusConnection the name is being watched on, or
53 * %NULL.
54 * @name: The name being watched.
55 * @user_data: User data passed to g_bus_watch_name().
56 *
57 * Invoked when the name being watched is known not to have to have an owner.
58 *
59 * This is also invoked when the #GDBusConnection on which the watch was
60 * established has been closed. In that case, @connection will be
61 * %NULL.
62 *
63 * Since: 2.26
64 */
65typedef void (*GBusNameVanishedCallback) (GDBusConnection *connection,
66 const gchar *name,
67 gpointer user_data);
68
69
70GIO_AVAILABLE_IN_ALL
71guint g_bus_watch_name (GBusType bus_type,
72 const gchar *name,
73 GBusNameWatcherFlags flags,
74 GBusNameAppearedCallback name_appeared_handler,
75 GBusNameVanishedCallback name_vanished_handler,
76 gpointer user_data,
77 GDestroyNotify user_data_free_func);
78GIO_AVAILABLE_IN_ALL
79guint g_bus_watch_name_on_connection (GDBusConnection *connection,
80 const gchar *name,
81 GBusNameWatcherFlags flags,
82 GBusNameAppearedCallback name_appeared_handler,
83 GBusNameVanishedCallback name_vanished_handler,
84 gpointer user_data,
85 GDestroyNotify user_data_free_func);
86GIO_AVAILABLE_IN_ALL
87guint g_bus_watch_name_with_closures (GBusType bus_type,
88 const gchar *name,
89 GBusNameWatcherFlags flags,
90 GClosure *name_appeared_closure,
91 GClosure *name_vanished_closure);
92GIO_AVAILABLE_IN_ALL
93guint g_bus_watch_name_on_connection_with_closures (
94 GDBusConnection *connection,
95 const gchar *name,
96 GBusNameWatcherFlags flags,
97 GClosure *name_appeared_closure,
98 GClosure *name_vanished_closure);
99GIO_AVAILABLE_IN_ALL
100void g_bus_unwatch_name (guint watcher_id);
101
102G_END_DECLS
103
104#endif /* __G_DBUS_NAME_WATCHING_H__ */
105