[telepathy-mission-control/master] mcd-account-manager: add initial version of write_conf_async
Jonny Lamb
jonny.lamb at collabora.co.uk
Mon Sep 14 11:09:10 PDT 2009
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
src/mcd-account-manager.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
src/mcd-account-manager.h | 8 ++++++
2 files changed, 66 insertions(+), 0 deletions(-)
diff --git a/src/mcd-account-manager.c b/src/mcd-account-manager.c
index 49cd97b..88d642a 100644
--- a/src/mcd-account-manager.c
+++ b/src/mcd-account-manager.c
@@ -1094,6 +1094,64 @@ mcd_account_manager_write_conf (McdAccountManager *account_manager)
account_manager->priv->keyfile, NULL);
}
+/**
+ * McdAccountManagerWriteConfCb:
+ * @account_manager: the #McdAccountManager
+ * @error: a set #GError on failure or %NULL if there was no error
+ * @user_data: user data
+ *
+ * The callback from mcd_account_manager_write_conf_async(). If the config
+ * writing was successful, @error will be %NULL, otherwise it will be set
+ * with the appropriate error.
+ */
+
+/**
+ * mcd_account_manager_write_conf_async:
+ * @account_manager: the #McdAccountManager
+ * @callback: a callback to be called on write success or failure
+ * @user_data: data to be passed to @callback
+ *
+ * Write the account manager configuration to disk. This is an asynchronous
+ * version of mcd_account_manager_write_conf() and should always used in favour
+ * of its synchronous version.
+ */
+void
+mcd_account_manager_write_conf_async (McdAccountManager *account_manager,
+ McdAccountManagerWriteConfCb callback,
+ gpointer user_data)
+{
+ GKeyFile *keyfile;
+ GError *error = NULL;
+ gchar *filename, *data;
+ gsize len;
+
+ g_return_if_fail (MCD_IS_ACCOUNT_MANAGER (account_manager));
+
+ keyfile = account_manager->priv->keyfile;
+
+ DEBUG ("called");
+
+ data = g_key_file_to_data (keyfile, &len, &error);
+
+ if (error == NULL)
+ {
+ filename = get_account_conf_filename ();
+ _mcd_file_set_contents (filename, data, len, &error);
+ g_free (filename);
+ g_free (data);
+ }
+
+ if (callback != NULL)
+ {
+ callback (account_manager, error, user_data);
+ }
+
+ if (error != NULL)
+ {
+ g_error_free (error);
+ }
+}
+
GHashTable *
_mcd_account_manager_get_accounts (McdAccountManager *account_manager)
{
diff --git a/src/mcd-account-manager.h b/src/mcd-account-manager.h
index d5b703e..c06e624 100644
--- a/src/mcd-account-manager.h
+++ b/src/mcd-account-manager.h
@@ -77,6 +77,14 @@ TpDBusDaemon *mcd_account_manager_get_dbus_daemon
GKeyFile *mcd_account_manager_get_config (McdAccountManager *account_manager);
void mcd_account_manager_write_conf (McdAccountManager *account_manager);
+typedef void (McdAccountManagerWriteConfCb) (McdAccountManager *account_manager,
+ const GError *error,
+ gpointer user_data);
+
+void mcd_account_manager_write_conf_async (McdAccountManager *account_manager,
+ McdAccountManagerWriteConfCb callback,
+ gpointer user_data);
+
McdAccount *mcd_account_manager_lookup_account (McdAccountManager *account_manager,
const gchar *name);
McdAccount *mcd_account_manager_lookup_account_by_path (McdAccountManager *account_manager,
--
1.5.6.5
More information about the telepathy-commits
mailing list