summaryrefslogtreecommitdiffstats
path: root/glib/test-dbus-glib.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/test-dbus-glib.c')
-rw-r--r--glib/test-dbus-glib.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/glib/test-dbus-glib.c b/glib/test-dbus-glib.c
new file mode 100644
index 00000000..3637678d
--- /dev/null
+++ b/glib/test-dbus-glib.c
@@ -0,0 +1,60 @@
+#include "dbus-glib.h"
+#include <stdio.h>
+
+GMainLoop *loop;
+
+static void
+message_handler (DBusConnection *connection,
+ DBusMessage *message, gpointer user_data)
+{
+ static int count = 0;
+ DBusMessage *reply;
+
+ reply = dbus_message_new ();
+ dbus_connection_send_message (connection,
+ reply,
+ NULL);
+ dbus_message_unref (reply);
+ count += 1;
+
+ if (count > 100)
+ {
+ printf ("Saw %d messages, exiting\n", count);
+ g_main_loop_quit (loop);
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ GSource *source;
+
+ DBusConnection *connection;
+ DBusResultCode result;
+ DBusMessage *message;
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ connection = dbus_connection_open (argv[1], &result);
+ if (connection == NULL)
+ {
+ fprintf (stderr, "Failed to open connection to %s: %s\n", argv[1],
+ dbus_result_to_string (result));
+ return 1;
+ }
+
+ source = dbus_connection_gsource_new (connection);
+ g_source_attach (source, NULL);
+ g_source_set_callback (source, (GSourceFunc)message_handler, NULL, NULL);
+
+ message = dbus_message_new ();
+ dbus_connection_send_message (connection,
+ message,
+ NULL);
+ dbus_message_unref (message);
+
+
+ g_main_loop_run (loop);
+
+ return 0;
+}