[Telepathy-commits] [telepathy-mission-control/master] Adjust to use TpConnectionManagerParam

Alberto Mardegan alberto.mardegan at nokia.com
Wed Feb 4 08:18:16 PST 2009


---
 src/mcd-account.c |   85 +++++++++++++++++-----------------------------------
 1 files changed, 28 insertions(+), 57 deletions(-)

diff --git a/src/mcd-account.c b/src/mcd-account.c
index 30388a0..07cf880 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -1034,9 +1034,11 @@ properties_iface_init (TpSvcDBusPropertiesClass *iface, gpointer iface_data)
 }
 
 static GType
-mc_param_type (McdProtocolParam *param)
+mc_param_type (const TpConnectionManagerParam *param)
 {
-    switch (param->signature[0])
+    if (G_UNLIKELY (!param->dbus_signature)) return G_TYPE_INVALID;
+
+    switch (param->dbus_signature[0])
     {
     case DBUS_TYPE_STRING:
 	return G_TYPE_STRING;
@@ -1049,7 +1051,8 @@ mc_param_type (McdProtocolParam *param)
     case DBUS_TYPE_BOOLEAN:
 	return G_TYPE_BOOLEAN;
     default:
-	g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC, param->name, param->signature);
+        g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC,
+                   param->name, param->dbus_signature);
     }
     return G_TYPE_INVALID;
 }
@@ -1083,23 +1086,16 @@ gboolean
 mcd_account_check_parameters (McdAccount *account)
 {
     McdAccountPrivate *priv = account->priv;
-    const GArray *parameters;
+    const TpConnectionManagerParam *param;
     gboolean valid;
-    guint i;
 
     g_debug ("%s called for %s", G_STRFUNC, priv->unique_name);
-    parameters = mcd_manager_get_parameters (priv->manager,
-					     priv->protocol_name);
-    if (!parameters) return FALSE;
+    param = mcd_manager_get_parameters (priv->manager, priv->protocol_name);
+    if (!param) return FALSE;
     valid = TRUE;
-    for (i = 0; i < parameters->len; i++)
+    while (param->name != NULL)
     {
-	McdProtocolParam *param;
-	GType type;
-
-	param = &g_array_index (parameters, McdProtocolParam, i);
-	type = mc_param_type (param);
-	if (param->flags & MCD_PROTOCOL_PARAM_REQUIRED)
+        if (param->flags & TP_CONN_MGR_PARAM_FLAG_REQUIRED)
 	{
 	    if (!mcd_account_get_parameter (account, param->name, NULL))
 	    {
@@ -1108,6 +1104,7 @@ mcd_account_check_parameters (McdAccount *account)
 		break;
 	    }
 	}
+        param++;
     }
 
     return valid;
@@ -1134,8 +1131,8 @@ mcd_account_set_parameters (McdAccount *account, GHashTable *params,
 			    GError **error)
 {
     McdAccountPrivate *priv = account->priv;
-    const GArray *parameters;
-    guint i, n_params = 0;
+    const TpConnectionManagerParam *param;
+    guint n_params = 0;
     GHashTableIter iter;
     const gchar *name;
     const GValue *value;
@@ -1143,14 +1140,13 @@ mcd_account_set_parameters (McdAccount *account, GHashTable *params,
     g_debug ("%s called", G_STRFUNC);
     if (!priv->manager && !load_manager (account)) return FALSE;
 
-    parameters = mcd_manager_get_parameters (priv->manager,
-					     priv->protocol_name);
-    for (i = 0; i < parameters->len; i++)
+    param = mcd_manager_get_parameters (priv->manager, priv->protocol_name);
+    if (G_UNLIKELY (!param)) return FALSE;
+
+    while (param->name != NULL)
     {
-	McdProtocolParam *param;
 	GType type;
 
-	param = &g_array_index (parameters, McdProtocolParam, i);
 	type = mc_param_type (param);
 	value = g_hash_table_lookup (params, param->name);
 	if (value)
@@ -1167,6 +1163,7 @@ mcd_account_set_parameters (McdAccount *account, GHashTable *params,
 	    }
 	    n_params++;
 	}
+        param++;
     }
 
     if (n_params != g_hash_table_size (params))
@@ -1638,37 +1635,14 @@ mcd_account_get_object_path (McdAccount *account)
 }
 
 static inline void
-add_parameter (McdAccount *account, McdProtocolParam *param,
+add_parameter (McdAccount *account, const TpConnectionManagerParam *param,
 	       GHashTable *params)
 {
     GValue *value;
     GType type;
 
-    g_return_if_fail (param != NULL);
-    g_return_if_fail (param->name != NULL);
-    g_return_if_fail (param->signature != NULL);
-
-    switch (param->signature[0])
-    {
-    case DBUS_TYPE_STRING:
-        type = G_TYPE_STRING;
-	break;
-    case DBUS_TYPE_INT16:
-    case DBUS_TYPE_INT32:
-        type = G_TYPE_INT;
-        break;
-    case DBUS_TYPE_UINT16:
-    case DBUS_TYPE_UINT32:
-        type = G_TYPE_UINT;
-	break;
-    case DBUS_TYPE_BOOLEAN:
-        type = G_TYPE_BOOLEAN;
-	break;
-    default:
-        g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC,
-                   param->name, param->signature);
-	return;
-    }
+    type = mc_param_type (param);
+    if (G_UNLIKELY (type == G_TYPE_INVALID)) return;
 
     value = tp_g_value_slice_new (type);
 
@@ -1688,9 +1662,8 @@ GHashTable *
 mcd_account_get_parameters (McdAccount *account)
 {
     McdAccountPrivate *priv = MCD_ACCOUNT_PRIV (account);
+    const TpConnectionManagerParam *param;
     GHashTable *params;
-    const GArray *parameters;
-    guint i;
 
     g_debug ("%s called", G_STRFUNC);
     if (!priv->manager && !load_manager (account)) return NULL;
@@ -1698,15 +1671,13 @@ mcd_account_get_parameters (McdAccount *account)
     params = g_hash_table_new_full (g_str_hash, g_str_equal,
 				    g_free,
                                     (GDestroyNotify)tp_g_value_slice_free);
-    parameters = mcd_manager_get_parameters (priv->manager,
-					     priv->protocol_name);
-    if (!parameters) return params;
-    for (i = 0; i < parameters->len; i++)
-    {
-	McdProtocolParam *param;
+    param = mcd_manager_get_parameters (priv->manager, priv->protocol_name);
+    if (G_UNLIKELY (!param)) return params;
 
-	param = &g_array_index (parameters, McdProtocolParam, i);
+    while (param->name != NULL)
+    {
 	add_parameter (account, param, params);
+        param++;
     }
     return params;
 }
-- 
1.5.6.5




More information about the telepathy-commits mailing list