* 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 <http://www.gnu.org/licenses/>.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
* @include: gio/gio.h
*
* #GDBusObjectManagerServer is used to export #GDBusObject instances using
- * the standardized <ulink
- * url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">org.freedesktop.DBus.ObjectManager</ulink>
+ * 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
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);
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,
* @object: An object.
*
* Like g_dbus_object_manager_server_export() but appends a string of
- * the form <literal>_N</literal> (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
*/
}
+/**
+ * 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