Branch data Line data Source code
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 : : #include "config.h" 24 : : 25 : : #include "gdbusobject.h" 26 : : #include "gdbusinterface.h" 27 : : #include "gdbusutils.h" 28 : : 29 : : #include "glibintl.h" 30 : : 31 : : /** 32 : : * GDBusObject: 33 : : * 34 : : * The `GDBusObject` type is the base type for D-Bus objects on both 35 : : * the service side (see [class@Gio.DBusObjectSkeleton]) and the client side 36 : : * (see [class@Gio.DBusObjectProxy]). It is essentially just a container of 37 : : * interfaces. 38 : : */ 39 : : 40 : : typedef GDBusObjectIface GDBusObjectInterface; 41 [ + + + - : 499 : G_DEFINE_INTERFACE (GDBusObject, g_dbus_object, G_TYPE_OBJECT) + + ] 42 : : 43 : : static void 44 : 6 : g_dbus_object_default_init (GDBusObjectIface *iface) 45 : : { 46 : : /** 47 : : * GDBusObject::interface-added: 48 : : * @object: The #GDBusObject emitting the signal. 49 : : * @interface: The #GDBusInterface that was added. 50 : : * 51 : : * Emitted when @interface is added to @object. 52 : : * 53 : : * Since: 2.30 54 : : */ 55 : 6 : g_signal_new (I_("interface-added"), 56 : : G_TYPE_FROM_INTERFACE (iface), 57 : : G_SIGNAL_RUN_LAST, 58 : : G_STRUCT_OFFSET (GDBusObjectIface, interface_added), 59 : : NULL, 60 : : NULL, 61 : : NULL, 62 : : G_TYPE_NONE, 63 : : 1, 64 : : G_TYPE_DBUS_INTERFACE); 65 : : 66 : : /** 67 : : * GDBusObject::interface-removed: 68 : : * @object: The #GDBusObject emitting the signal. 69 : : * @interface: The #GDBusInterface that was removed. 70 : : * 71 : : * Emitted when @interface is removed from @object. 72 : : * 73 : : * Since: 2.30 74 : : */ 75 : 6 : g_signal_new (I_("interface-removed"), 76 : : G_TYPE_FROM_INTERFACE (iface), 77 : : G_SIGNAL_RUN_LAST, 78 : : G_STRUCT_OFFSET (GDBusObjectIface, interface_removed), 79 : : NULL, 80 : : NULL, 81 : : NULL, 82 : : G_TYPE_NONE, 83 : : 1, 84 : : G_TYPE_DBUS_INTERFACE); 85 : 6 : } 86 : : 87 : : /* ---------------------------------------------------------------------------------------------------- */ 88 : : 89 : : /** 90 : : * g_dbus_object_get_object_path: 91 : : * @object: A #GDBusObject. 92 : : * 93 : : * Gets the object path for @object. 94 : : * 95 : : * Returns: A string owned by @object. Do not free. 96 : : * 97 : : * Since: 2.30 98 : : */ 99 : : const gchar * 100 : 80 : g_dbus_object_get_object_path (GDBusObject *object) 101 : : { 102 : 80 : GDBusObjectIface *iface = G_DBUS_OBJECT_GET_IFACE (object); 103 : 80 : return iface->get_object_path (object); 104 : : } 105 : : 106 : : /** 107 : : * g_dbus_object_get_interfaces: 108 : : * @object: A #GDBusObject. 109 : : * 110 : : * Gets the D-Bus interfaces associated with @object. 111 : : * 112 : : * Returns: (element-type GDBusInterface) (transfer full): A list of #GDBusInterface instances. 113 : : * The returned list must be freed by g_list_free() after each element has been freed 114 : : * with g_object_unref(). 115 : : * 116 : : * Since: 2.30 117 : : */ 118 : : GList * 119 : 34 : g_dbus_object_get_interfaces (GDBusObject *object) 120 : : { 121 : 34 : GDBusObjectIface *iface = G_DBUS_OBJECT_GET_IFACE (object); 122 : 34 : return iface->get_interfaces (object); 123 : : } 124 : : 125 : : /** 126 : : * g_dbus_object_get_interface: 127 : : * @object: A #GDBusObject. 128 : : * @interface_name: A D-Bus interface name. 129 : : * 130 : : * Gets the D-Bus interface with name @interface_name associated with 131 : : * @object, if any. 132 : : * 133 : : * Returns: (nullable) (transfer full): %NULL if not found, otherwise a 134 : : * #GDBusInterface that must be freed with g_object_unref(). 135 : : * 136 : : * Since: 2.30 137 : : */ 138 : : GDBusInterface * 139 : 52 : g_dbus_object_get_interface (GDBusObject *object, 140 : : const gchar *interface_name) 141 : : { 142 : 52 : GDBusObjectIface *iface = G_DBUS_OBJECT_GET_IFACE (object); 143 : 52 : g_return_val_if_fail (g_dbus_is_interface_name (interface_name), NULL); 144 : 52 : return iface->get_interface (object, interface_name); 145 : : }