X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgdbusobjectmanagerserver.c;h=bb6f8c23e851a8afbd1f0ea6ec1cf0ffc07084c2;hb=174ebaefcc2b1b94f4a628e60f150b7209230dbf;hp=cc436f8ae83e0cf94309e33d7d39559d27ad2e19;hpb=928d2cea616db45a1a0d870fd73aed2570170288;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gdbusobjectmanagerserver.c b/gio/gdbusobjectmanagerserver.c index cc436f8..bb6f8c2 100644 --- a/gio/gdbusobjectmanagerserver.c +++ b/gio/gdbusobjectmanagerserver.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . * * Author: David Zeuthen */ @@ -40,8 +38,8 @@ * @include: gio/gio.h * * #GDBusObjectManagerServer is used to export #GDBusObject instances using - * the standardized org.freedesktop.DBus.ObjectManager + * the standardized + * [org.freedesktop.DBus.ObjectManager](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager) * interface. For example, remote D-Bus clients can get all objects * and properties in a single call. Additionally, any change in the * object hierarchy is broadcast using signals. This means that D-Bus @@ -99,7 +97,8 @@ enum static void dbus_object_manager_interface_init (GDBusObjectManagerIface *iface); G_DEFINE_TYPE_WITH_CODE (GDBusObjectManagerServer, g_dbus_object_manager_server, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT_MANAGER, dbus_object_manager_interface_init)); + G_ADD_PRIVATE (GDBusObjectManagerServer) + G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT_MANAGER, dbus_object_manager_interface_init)) static void g_dbus_object_manager_server_constructed (GObject *object); @@ -220,16 +219,12 @@ g_dbus_object_manager_server_class_init (GDBusObjectManagerServerClass *klass) G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - - g_type_class_add_private (klass, sizeof (GDBusObjectManagerServerPrivate)); } static void g_dbus_object_manager_server_init (GDBusObjectManagerServer *manager) { - manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, - G_TYPE_DBUS_OBJECT_MANAGER_SERVER, - GDBusObjectManagerServerPrivate); + manager->priv = g_dbus_object_manager_server_get_instance_private (manager); g_mutex_init (&manager->priv->lock); manager->priv->map_object_path_to_data = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -546,10 +541,9 @@ g_dbus_object_manager_server_export (GDBusObjectManagerServer *manager, * @object: An object. * * Like g_dbus_object_manager_server_export() but appends a string of - * the form _N (with N being a natural number) to - * @object's object path if an object with the given path - * already exists. As such, the #GDBusObjectProxy:g-object-path property - * of @object may be modified. + * the form _N (with N being a natural number) to @object's object path + * if an object with the given path already exists. As such, the + * #GDBusObjectProxy:g-object-path property of @object may be modified. * * Since: 2.30 */ @@ -598,6 +592,40 @@ g_dbus_object_manager_server_export_uniquely (GDBusObjectManagerServer *manager, } +/** + * g_dbus_object_manager_server_is_exported: + * @manager: A #GDBusObjectManagerServer. + * @object: An object. + * + * Returns whether @object is currently exported on @manager. + * + * Returns: %TRUE if @object is exported + * + * Since: 2.34 + **/ +gboolean +g_dbus_object_manager_server_is_exported (GDBusObjectManagerServer *manager, + GDBusObjectSkeleton *object) +{ + RegistrationData *data = NULL; + const gchar *object_path; + gboolean object_is_exported; + + g_return_val_if_fail (G_IS_DBUS_OBJECT_MANAGER_SERVER (manager), FALSE); + g_return_val_if_fail (G_IS_DBUS_OBJECT (object), FALSE); + + g_mutex_lock (&manager->priv->lock); + + object_path = g_dbus_object_get_object_path (G_DBUS_OBJECT (object)); + if (object_path != NULL) + data = g_hash_table_lookup (manager->priv->map_object_path_to_data, object_path); + object_is_exported = (data != NULL); + + g_mutex_unlock (&manager->priv->lock); + + return object_is_exported; +} + /* ---------------------------------------------------------------------------------------------------- */ static gboolean