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