From 8c095eea8fbe2f8c219bdb2aebcf61e4e3993f53 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sun, 10 Jul 2005 22:54:19 +0000 Subject: 2005-07-10 Colin Walters * doc/TODO: Knock off some GLib items with this patch. * glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) (_dbus_gvalue_signals_error): New functions. * glib/dbus-gvalue-utils.h: Prototype them. * glib/dbus-gobject.c (arg_iterate): Update to handle return vals and change to not output const/retval flags for input args. All callers updated. (invoke_object_method): Refactor to handle return values. Add some more comments in various places. Remove debug g_print. * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New. * glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name): Handle G_TYPE_NONE. (compute_gsignature): New function; refactored from code from compute_marshaller and compute_marshaller_name. Enhance to handle return values and async ops more cleanly. Update for async ops returning NONE instead of BOOLEAN. (compute_marshaller, compute_marshaller_name): Call compute_gsignature and output appropriate string. (generate_glue): Handle return value annotation. Also don't dump constness flag for input arguments. * glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains files shared between installed library and utilities. (libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS. (libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the binding tool can access gtype utility functions. * test/glib/test-service-glib.c: * test/glib/test-service-glib.xml: * test/glib/test-dbus-glib.c: Add some tests for return values. --- test/glib/test-service-glib.c | 46 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) (limited to 'test/glib/test-service-glib.c') diff --git a/test/glib/test-service-glib.c b/test/glib/test-service-glib.c index 853b401a..e44310f3 100644 --- a/test/glib/test-service-glib.c +++ b/test/glib/test-service-glib.c @@ -52,6 +52,10 @@ gboolean my_object_do_nothing (MyObject *obj, GError **error); gboolean my_object_increment (MyObject *obj, gint32 x, gint32 *ret, GError **error); +gint32 my_object_increment_retval (MyObject *obj, gint32 x); + +gint32 my_object_increment_retval_error (MyObject *obj, gint32 x, GError **error); + gboolean my_object_throw_error (MyObject *obj, GError **error); gboolean my_object_uppercase (MyObject *obj, const char *str, char **ret, GError **error); @@ -91,9 +95,9 @@ gboolean my_object_emit_frobnicate (MyObject *obj, GError **error); gboolean my_object_terminate (MyObject *obj, GError **error); -gboolean my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context); +void my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context); -gboolean my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context); +void my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context); #include "test-service-glib-glue.h" @@ -283,6 +287,27 @@ my_object_increment (MyObject *obj, gint32 x, gint32 *ret, GError **error) return TRUE; } +gint32 +my_object_increment_retval (MyObject *obj, gint32 x) +{ + return x + 1; +} + +gint32 +my_object_increment_retval_error (MyObject *obj, gint32 x, GError **error) +{ + if (x + 1 > 10) + { + g_set_error (error, + MY_OBJECT_ERROR, + MY_OBJECT_ERROR_FOO, + "%s", + "x is bigger than 9"); + return FALSE; + } + return x + 1; +} + gboolean my_object_throw_error (MyObject *obj, GError **error) { @@ -559,14 +584,13 @@ do_async_increment (IncrementData *data) return FALSE; } -gboolean +void my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context) { IncrementData *data = g_new0 (IncrementData, 1); data->x = x; data->context = context; g_idle_add ((GSourceFunc)do_async_increment, data); - return TRUE; } static gboolean @@ -582,13 +606,12 @@ do_async_error (IncrementData *data) return FALSE; } -gboolean +void my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context) { IncrementData *data = g_new0(IncrementData, 1); data->context = context; g_idle_add ((GSourceFunc)do_async_error, data); - return TRUE; } @@ -623,11 +646,16 @@ main (int argc, char **argv) g_printerr ("Launching test-service-glib\n"); - g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); - g_log_set_always_fatal (G_LOG_LEVEL_WARNING); - loop = g_main_loop_new (NULL, FALSE); + { + GLogLevelFlags fatal_mask; + + fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK); + fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL; + g_log_set_always_fatal (fatal_mask); + } + error = NULL; connection = dbus_g_bus_get (DBUS_BUS_STARTER, &error); -- cgit