diff --git a/ChangeLog b/ChangeLog index 6eed4c58e..30b03df59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-09-20 Dan Williams + + * introspection/nm-settings-connection.xml + libnm-glib/nm-settings.c + libnm-glib/nm-settings.h + - Make GetSecrets asynchronous on the server side + 2007-09-20 Dan Williams * src/nm-manager.h diff --git a/introspection/nm-settings-connection.xml b/introspection/nm-settings-connection.xml index 6a4d8fdf7..b4f5fc78e 100644 --- a/introspection/nm-settings-connection.xml +++ b/introspection/nm-settings-connection.xml @@ -16,6 +16,7 @@ + diff --git a/libnm-glib/nm-settings.c b/libnm-glib/nm-settings.c index 22178e794..077439d1e 100644 --- a/libnm-glib/nm-settings.c +++ b/libnm-glib/nm-settings.c @@ -115,10 +115,9 @@ static gboolean impl_connection_settings_get_id (NMConnectionSettings *connectio static gboolean impl_connection_settings_get_settings (NMConnectionSettings *connection, GHashTable **settings, GError **error); -static gboolean impl_connection_settings_get_secrets (NMConnectionSettings *connection, +static void impl_connection_settings_get_secrets (NMConnectionSettings *connection, const gchar *setting_name, - GHashTable **secrets, - GError **error); + DBusGMethodInvocation *context); #include "nm-settings-connection-glue.h" @@ -169,22 +168,28 @@ impl_connection_settings_get_settings (NMConnectionSettings *connection, return TRUE; } -static gboolean +static void impl_connection_settings_get_secrets (NMConnectionSettings *connection, - const gchar *setting_name, - GHashTable **secrets, - GError **error) + const gchar *setting_name, + DBusGMethodInvocation *context) { - g_return_val_if_fail (NM_IS_CONNECTION_SETTINGS (connection), FALSE); + GError *error = NULL; - if (!CONNECTION_SETTINGS_CLASS (connection)->get_secrets) { - *error = new_error ("%s.%d - Missing implementation for ConnectionSettings::get_secret.", __FILE__, __LINE__); - return FALSE; + if (!NM_IS_CONNECTION_SETTINGS (connection)) { + error = new_error ("%s.%d - Invalid connection in ConnectionSettings::get_secret.", __FILE__, __LINE__); + dbus_g_method_return_error (context, error); + g_error_free (error); + return; } - *secrets = CONNECTION_SETTINGS_CLASS (connection)->get_secrets (connection, setting_name); + if (!CONNECTION_SETTINGS_CLASS (connection)->get_secrets) { + error = new_error ("%s.%d - Missing implementation for ConnectionSettings::get_secret.", __FILE__, __LINE__); + dbus_g_method_return_error (context, error); + g_error_free (error); + return; + } - return TRUE; + CONNECTION_SETTINGS_CLASS (connection)->get_secrets (connection, setting_name, context); } static guint32 cs_counter = 0; diff --git a/libnm-glib/nm-settings.h b/libnm-glib/nm-settings.h index c7ccff14b..d5267658b 100644 --- a/libnm-glib/nm-settings.h +++ b/libnm-glib/nm-settings.h @@ -27,7 +27,9 @@ typedef struct { /* virtual methods */ gchar * (* get_id) (NMConnectionSettings *connection); GHashTable * (* get_settings) (NMConnectionSettings *connection); - GHashTable * (* get_secrets) (NMConnectionSettings *connection, const gchar *setting_name); + void (* get_secrets) (NMConnectionSettings *connection, + const gchar *setting_name, + DBusGMethodInvocation *context); /* signals */ void (* updated) (NMConnectionSettings *connection, GHashTable *settings);