Git init
[external/dbus-glib.git] / test / core / peer-server.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include <dbus/dbus.h>
5 #include <dbus/dbus-glib.h>
6 #include <dbus/dbus-glib-lowlevel.h>
7
8 #include "my-object.h"
9
10 GMainLoop *loop;
11
12 static void
13 new_connection_func (DBusServer *server, DBusConnection *conn, gpointer user_data)
14 {
15   GObject *obj;
16
17   obj = g_object_new (MY_TYPE_OBJECT, NULL);
18
19   dbus_connection_ref (conn);
20   dbus_connection_setup_with_g_main (conn, NULL);
21
22   dbus_g_connection_register_g_object
23     (dbus_connection_get_g_connection (conn), "/", obj);
24 }
25
26 int
27 main (int argc, char **argv)
28 {
29   DBusError error;
30   DBusServer *server;
31   char *addr;
32
33   dbus_error_init (&error);
34
35   g_thread_init (NULL); dbus_g_thread_init ();
36   g_type_init ();
37
38   loop = g_main_loop_new (NULL, TRUE);
39
40   server = dbus_server_listen ("unix:tmpdir=/tmp", &error);
41   if (!server) 
42     {
43       g_warning ("Cannot create server: %s", error.message);
44       return 1;
45     }
46   addr = dbus_server_get_address (server);
47   fprintf (stdout, "%s\n", addr);
48   fflush (stdout);
49   free (addr);
50   dbus_server_setup_with_g_main (server, NULL);
51   dbus_server_set_new_connection_function (server, new_connection_func, NULL, NULL);
52   
53   g_main_loop_run (loop);
54   
55   g_main_loop_unref (loop);
56   return 0;
57 }