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 : : 28 : : #include "glibintl.h" 29 : : 30 : : /** 31 : : * GDBusInterface: 32 : : * 33 : : * Base type for D-Bus interfaces. 34 : : * 35 : : * The `GDBusInterface` type is the base type for D-Bus interfaces both 36 : : * on the service side (see [class@Gio.DBusInterfaceSkeleton]) and client side 37 : : * (see [class@Gio.DBusProxy]). 38 : : * 39 : : * Since: 2.30 40 : : */ 41 : : 42 : : typedef GDBusInterfaceIface GDBusInterfaceInterface; 43 [ + + + - : 557 : G_DEFINE_INTERFACE (GDBusInterface, g_dbus_interface, G_TYPE_OBJECT) + + ] 44 : : 45 : : static void 46 : 123 : g_dbus_interface_default_init (GDBusInterfaceIface *iface) 47 : : { 48 : 123 : } 49 : : 50 : : /* ---------------------------------------------------------------------------------------------------- */ 51 : : 52 : : /** 53 : : * g_dbus_interface_get_info: 54 : : * @interface_: An exported D-Bus interface. 55 : : * 56 : : * Gets D-Bus introspection information for the D-Bus interface 57 : : * implemented by @interface_. 58 : : * 59 : : * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. 60 : : * 61 : : * Since: 2.30 62 : : */ 63 : : GDBusInterfaceInfo * 64 : 69 : g_dbus_interface_get_info (GDBusInterface *interface_) 65 : : { 66 : 69 : g_return_val_if_fail (G_IS_DBUS_INTERFACE (interface_), NULL); 67 : 69 : return G_DBUS_INTERFACE_GET_IFACE (interface_)->get_info (interface_); 68 : : } 69 : : 70 : : /** 71 : : * g_dbus_interface_get_object: (skip) 72 : : * @interface_: An exported D-Bus interface 73 : : * 74 : : * Gets the #GDBusObject that @interface_ belongs to, if any. 75 : : * 76 : : * It is not safe to use the returned object if @interface_ or 77 : : * the returned object is being used from other threads. See 78 : : * g_dbus_interface_dup_object() for a thread-safe alternative. 79 : : * 80 : : * Returns: (nullable) (transfer none): A #GDBusObject or %NULL. The returned 81 : : * reference belongs to @interface_ and should not be freed. 82 : : * 83 : : * Since: 2.30 84 : : */ 85 : : GDBusObject * 86 : 12 : g_dbus_interface_get_object (GDBusInterface *interface_) 87 : : { 88 : 12 : g_return_val_if_fail (G_IS_DBUS_INTERFACE (interface_), NULL); 89 : 12 : return G_DBUS_INTERFACE_GET_IFACE (interface_)->get_object (interface_); 90 : : } 91 : : 92 : : /** 93 : : * g_dbus_interface_dup_object: (rename-to g_dbus_interface_get_object) 94 : : * @interface_: An exported D-Bus interface. 95 : : * 96 : : * Gets the #GDBusObject that @interface_ belongs to, if any. 97 : : * 98 : : * Returns: (nullable) (transfer full): A #GDBusObject or %NULL. The returned 99 : : * reference should be freed with g_object_unref(). 100 : : * 101 : : * Since: 2.32 102 : : */ 103 : : GDBusObject * 104 : 3 : g_dbus_interface_dup_object (GDBusInterface *interface_) 105 : : { 106 : : GDBusObject *ret; 107 : 3 : g_return_val_if_fail (G_IS_DBUS_INTERFACE (interface_), NULL); 108 [ + - ]: 3 : if (G_LIKELY (G_DBUS_INTERFACE_GET_IFACE (interface_)->dup_object != NULL)) 109 : : { 110 : 3 : ret = G_DBUS_INTERFACE_GET_IFACE (interface_)->dup_object (interface_); 111 : : } 112 : : else 113 : : { 114 : 0 : g_warning ("No dup_object() vfunc on type %s - using get_object() in a way that is not thread-safe.", 115 : : g_type_name_from_instance ((GTypeInstance *) interface_)); 116 : 0 : ret = G_DBUS_INTERFACE_GET_IFACE (interface_)->get_object (interface_); 117 [ # # ]: 0 : if (ret != NULL) 118 : 0 : g_object_ref (ret); 119 : : } 120 : 3 : return ret; 121 : : } 122 : : 123 : : /** 124 : : * g_dbus_interface_set_object: 125 : : * @interface_: An exported D-Bus interface. 126 : : * @object: (nullable): A #GDBusObject or %NULL. 127 : : * 128 : : * Sets the #GDBusObject for @interface_ to @object. 129 : : * 130 : : * Note that @interface_ will hold a weak reference to @object. 131 : : * 132 : : * Since: 2.30 133 : : */ 134 : : void 135 : 77 : g_dbus_interface_set_object (GDBusInterface *interface_, 136 : : GDBusObject *object) 137 : : { 138 : 77 : g_return_if_fail (G_IS_DBUS_INTERFACE (interface_)); 139 : 77 : g_return_if_fail (object == NULL || G_IS_DBUS_OBJECT (object)); 140 : 77 : G_DBUS_INTERFACE_GET_IFACE (interface_)->set_object (interface_, object); 141 : : }