-#include "gdbus-example-objectmanager-generated.h"
+#include "gdbus-object-manager-example/gdbus-example-objectmanager-generated.h"
/* ---------------------------------------------------------------------------------------------------- */
static void
+print_objects (GDBusObjectManager *manager)
+{
+ GList *objects;
+ GList *l;
+
+ g_print ("Object manager at %s\n", g_dbus_object_manager_get_object_path (manager));
+ objects = g_dbus_object_manager_get_objects (manager);
+ for (l = objects; l != NULL; l = l->next)
+ {
+ ExampleObject *object = EXAMPLE_OBJECT (l->data);
+ GList *interfaces;
+ GList *ll;
+ g_print (" - Object at %s\n", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)));
+
+ interfaces = g_dbus_object_get_interfaces (G_DBUS_OBJECT (object));
+ for (ll = interfaces; ll != NULL; ll = ll->next)
+ {
+ GDBusInterface *interface = G_DBUS_INTERFACE (ll->data);
+ g_print (" - Interface %s\n", g_dbus_interface_get_info (interface)->name);
+
+ /* Note that @interface is really a GDBusProxy instance - and additionally also
+ * an ExampleAnimal or ExampleCat instance - either of these can be used to
+ * invoke methods on the remote object. For example, the generated function
+ *
+ * void example_animal_call_poke_sync (ExampleAnimal *proxy,
+ * gboolean make_sad,
+ * gboolean make_happy,
+ * GCancellable *cancellable,
+ * GError **error);
+ *
+ * can be used to call the Poke() D-Bus method on the .Animal interface.
+ * Additionally, the generated function
+ *
+ * const gchar *example_animal_get_mood (ExampleAnimal *object);
+ *
+ * can be used to get the value of the :Mood property.
+ */
+ }
+ g_list_free_full (interfaces, g_object_unref);
+ }
+ g_list_free_full (objects, g_object_unref);
+}
+
+static void
on_object_added (GDBusObjectManager *manager,
GDBusObject *object,
gpointer user_data)
{
gchar *owner;
owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (manager));
- g_debug ("added object at %s (owner %s)", g_dbus_object_get_object_path (object), owner);
+ g_print ("Added object at %s (owner %s)\n", g_dbus_object_get_object_path (object), owner);
g_free (owner);
}
{
gchar *owner;
owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (manager));
- g_debug ("removed object at %s (owner %s)", g_dbus_object_get_object_path (object), owner);
+ g_print ("Removed object at %s (owner %s)\n", g_dbus_object_get_object_path (object), owner);
g_free (owner);
}
gchar *name_owner;
name_owner = g_dbus_object_manager_client_get_name_owner (manager);
- g_debug ("name-owner: %s", name_owner);
+ g_print ("name-owner: %s\n", name_owner);
g_free (name_owner);
}
GMainLoop *loop;
GError *error;
gchar *name_owner;
- GList *objects;
- GList *l;
manager = NULL;
loop = NULL;
- g_type_init ();
-
loop = g_main_loop_new (NULL, FALSE);
error = NULL;
}
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (manager));
- g_debug ("name-owner: %s", name_owner);
+ g_print ("name-owner: %s\n", name_owner);
g_free (name_owner);
- objects = g_dbus_object_manager_get_objects (manager);
- for (l = objects; l != NULL; l = l->next)
- {
- GDBusObject *object = G_DBUS_OBJECT (l->data);
- g_debug ("proxy has object at %s", g_dbus_object_get_object_path (object));
- }
- g_list_foreach (objects, (GFunc) g_object_unref, NULL);
- g_list_free (objects);
+ print_objects (manager);
g_signal_connect (manager,
"notify::name-owner",