1 #include <dbus/dbus-glib.h>
5 static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
6 static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
9 lose (const char *str, ...)
15 vfprintf (stderr, str, args);
24 lose_gerror (const char *prefix, GError *error)
26 lose ("%s: %s", prefix, error->message);
29 typedef struct TestObject TestObject;
30 typedef struct TestObjectClass TestObjectClass;
32 GType test_object_get_type (void);
39 struct TestObjectClass
50 static guint signals[LAST_SIGNAL] = { 0 };
52 #define TEST_TYPE_OBJECT (test_object_get_type ())
53 #define TEST_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), TEST_TYPE_OBJECT, TestObject))
54 #define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
55 #define TEST_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), TEST_TYPE_OBJECT))
56 #define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
57 #define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
59 G_DEFINE_TYPE(TestObject, test_object, G_TYPE_OBJECT)
61 gboolean test_object_emit_hello_signal (TestObject *obj, GError **error);
63 #include "example-signal-emitter-glue.h"
66 test_object_init (TestObject *obj)
71 test_object_class_init (TestObjectClass *klass)
73 signals[HELLO_SIGNAL] =
74 g_signal_new ("hello_signal",
75 G_OBJECT_CLASS_TYPE (klass),
76 G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
79 g_cclosure_marshal_VOID__STRING,
80 G_TYPE_NONE, 1, G_TYPE_STRING);
84 test_object_emit_hello_signal (TestObject *obj, GError **error)
86 g_signal_emit (obj, signals[HELLO_SIGNAL], 0, "Hello");
92 main (int argc, char **argv)
95 DBusGProxy *bus_proxy;
99 guint request_name_result;
103 dbus_g_object_type_install_info (TEST_TYPE_OBJECT, &dbus_glib_test_object_object_info);
105 mainloop = g_main_loop_new (NULL, FALSE);
107 bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
109 lose_gerror ("Couldn't connect to session bus", error);
111 bus_proxy = dbus_g_proxy_new_for_name (bus, "org.freedesktop.DBus",
112 "/org/freedesktop/DBus",
113 "org.freedesktop.DBus");
115 if (!dbus_g_proxy_call (bus_proxy, "RequestName", &error,
116 G_TYPE_STRING, "org.designfu.TestService",
119 G_TYPE_UINT, &request_name_result,
121 lose_gerror ("Failed to acquire org.designfu.TestService", error);
123 obj = g_object_new (TEST_TYPE_OBJECT, NULL);
125 dbus_g_connection_register_g_object (bus, "/org/designfu/TestService/object", G_OBJECT (obj));
127 printf ("test service running\n");
129 g_main_loop_run (mainloop);