2003-10-12 Havoc Pennington <hp@pobox.com>
[platform/upstream/dbus.git] / test / glib / test-dbus-glib.c
1 /* -*- mode: C; c-file-style: "gnu" -*- */
2 #include "dbus-glib.h"
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6
7 int
8 main (int argc, char **argv)
9 {
10   DBusConnection *connection;
11   GMainLoop *loop;
12   GError *error;
13   DBusGProxy *driver;
14   DBusPendingCall *call;
15   char **service_list;
16   int service_list_len;
17   int i;
18
19   g_type_init ();
20   
21   loop = g_main_loop_new (NULL, FALSE);
22
23   error = NULL;
24   connection = dbus_bus_get_with_g_main (DBUS_BUS_SESSION,
25                                          &error);
26   if (connection == NULL)
27     {
28       g_printerr ("Failed to open connection to bus: %s\n",
29                   error->message);
30       g_error_free (error);
31       exit (1);
32     }
33
34   /* Create a proxy object for the "bus driver" */
35   
36   driver = dbus_gproxy_new_for_service (connection,
37                                         DBUS_SERVICE_ORG_FREEDESKTOP_DBUS,
38                                         DBUS_PATH_ORG_FREEDESKTOP_DBUS,
39                                         DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS);
40
41   /* Call ListServices method */
42   
43   call = dbus_gproxy_begin_call (driver, "ListServices", DBUS_TYPE_INVALID);
44
45   error = NULL;
46   if (!dbus_gproxy_end_call (driver, call, &error,
47                              DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
48                              &service_list, &service_list_len,
49                              DBUS_TYPE_INVALID))
50     {
51       g_printerr ("Failed to complete ListServices call: %s\n",
52                   error->message);
53       g_error_free (error);
54       exit (1);
55     }
56
57   g_print ("Services on the message bus:\n");
58   i = 0;
59   while (i < service_list_len)
60     {
61       g_assert (service_list[i] != NULL);
62       g_print ("  %s\n", service_list[i]);
63       ++i;
64     }
65   g_assert (service_list[i] == NULL);
66   
67   dbus_free_string_array (service_list);
68
69   g_object_unref (G_OBJECT (driver));
70   
71   g_print ("Successfully completed %s\n", argv[0]);
72   
73   return 0;
74 }