diff options
author | José Alburquerque <jaalburqu@svn.gnome.org> | 2011-01-07 12:43:17 -0500 |
---|---|---|
committer | José Alburquerque <jaalburqu@svn.gnome.org> | 2011-01-07 12:46:59 -0500 |
commit | 5b4a561aab473adf47c6b267ac4a69b310de777e (patch) | |
tree | 722158519aed52733ccb13749dfa5cdf99d703da /gio/src/dbusconnection.ccg | |
parent | 02cb6c80ee5e53f6f8dca175ef5c5c31b88b1e50 (diff) | |
download | glibmm-5b4a561aab473adf47c6b267ac4a69b310de777e.tar.gz |
DBusConnection: Callbacks: Return DBusError exceptions to caller.
* gio/src/dbusconnection.ccg: Modify the callbacks that deal with
getting/setting properties for a DBus interface to set the GError*
parameter if it is a DBus related GError. This should allow receiving
DBus exceptions if the slot throws one with respect to not being able
to successfully get/set a property.
Diffstat (limited to 'gio/src/dbusconnection.ccg')
-rw-r--r-- | gio/src/dbusconnection.ccg | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gio/src/dbusconnection.ccg b/gio/src/dbusconnection.ccg index 20933dc4..c0305b58 100644 --- a/gio/src/dbusconnection.ccg +++ b/gio/src/dbusconnection.ccg @@ -21,6 +21,7 @@ #include <giomm/dbusauthobserver.h> #include <giomm/dbusintrospection.h> #include <giomm/dbusmethodinvocation.h> +#include <giomm/error.h> #include "slot_async.h" namespace @@ -107,7 +108,7 @@ static void DBusInterfaceVTable_MethodCall_giomm_callback( static GVariant* DBusInterfaceVTable_GetProperty_giomm_callback( GDBusConnection* connection, const char* sender, const char* object_path, - const char* interface_name, const char* property_name, GError**, + const char* interface_name, const char* property_name, GError** error, void* user_data) { Gio::DBusInterfaceVTable* vtable = @@ -125,6 +126,10 @@ static GVariant* DBusInterfaceVTable_GetProperty_giomm_callback( Glib::ustring(interface_name), Glib::ustring(property_name)); return result.gobj_copy(); } + catch(const Gio::DBusError& ex) + { + *error = const_cast<GError*>(ex.gobj()); + } catch(...) { Glib::exception_handlers_invoke(); @@ -136,7 +141,7 @@ static GVariant* DBusInterfaceVTable_GetProperty_giomm_callback( static gboolean DBusInterfaceVTable_SetProperty_giomm_callback( GDBusConnection* connection, const char* sender, const char* object_path, const char* interface_name, const char* property_name, GVariant* value, - GError**, void* user_data) + GError** error, void* user_data) { Gio::DBusInterfaceVTable* vtable = static_cast<Gio::DBusInterfaceVTable*>(user_data); @@ -151,6 +156,10 @@ static gboolean DBusInterfaceVTable_SetProperty_giomm_callback( Glib::ustring(interface_name), Glib::ustring(property_name), Glib::VariantBase(value, true))); } + catch(const Gio::DBusError& ex) + { + *error = const_cast<GError*>(ex.gobj()); + } catch(...) { Glib::exception_handlers_invoke(); |