cdce28990f5682bb112b1625e38de6bdac0768a4
[platform/upstream/dbus.git] / glib / test-dbus-glib.c
1 #include "dbus-glib.h"
2 #include <stdio.h>
3
4 GMainLoop *loop;
5
6 static void
7 message_handler (DBusConnection *connection,
8                  DBusMessage *message, gpointer user_data)
9 {
10   static int count = 0;
11   DBusMessage *reply;
12
13   reply = dbus_message_new ("org.freedesktop.DBus.Test", "org.freedesktop.DBus.Test");
14   dbus_connection_send_message (connection,
15                                 reply,
16                                 NULL);
17   dbus_message_unref (reply);
18   count += 1;
19   
20   if (count > 100)
21     {
22       printf ("Saw %d messages, exiting\n", count);
23       g_main_loop_quit (loop);
24     }
25 }
26
27 int
28 main (int argc, char **argv)
29 {
30   GSource *source;
31   
32   DBusConnection *connection;
33   DBusResultCode result;
34   DBusMessage *message;
35   
36   loop = g_main_loop_new (NULL, FALSE);
37
38   connection = dbus_connection_open (argv[1], &result);
39   if (connection == NULL)
40     {
41       fprintf (stderr, "Failed to open connection to %s: %s\n", argv[1],
42                dbus_result_to_string (result));
43       return 1;
44     }
45
46   source = dbus_connection_gsource_new (connection);
47   g_source_attach (source, NULL);
48   g_source_set_callback (source, (GSourceFunc)message_handler, NULL, NULL);
49   
50   message = dbus_message_new ("org.freedesktop.DBus.Test", "org.freedesktop.DBus.Test");
51   dbus_connection_send_message (connection,
52                                 message,
53                                 NULL);
54   dbus_message_unref (message);
55   
56   
57   g_main_loop_run (loop);
58   
59   return 0;
60 }