+
+McAccount *
+empathy_account_manager_get_account (EmpathyAccountManager *manager,
+ TpConnection *connection)
+{
+ EmpathyAccountManagerPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_MANAGER (manager), 0);
+
+ priv = GET_PRIV (manager);
+
+ return g_hash_table_lookup (priv->connections, connection);
+}
+
+GList *
+empathy_account_manager_dup_accounts (EmpathyAccountManager *manager)
+{
+ EmpathyAccountManagerPriv *priv;
+ GList *ret;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_MANAGER (manager), NULL);
+
+ priv = GET_PRIV (manager);
+
+ ret = g_hash_table_get_keys (priv->accounts);
+ g_list_foreach (ret, (GFunc) g_object_ref, NULL);
+
+ return ret;
+}
+
+/**
+ * empathy_account_manager_get_connection:
+ * @manager: a #EmpathyAccountManager
+ * @account: a #McAccount
+ *
+ * Get the connection of the accounts, or NULL if account is offline or the
+ * connection is not yet ready.
+ *
+ * Returns: the connection of the accounts.
+ **/
+TpConnection *
+empathy_account_manager_get_connection (EmpathyAccountManager *manager,
+ McAccount *account)
+{
+ EmpathyAccountManagerPriv *priv;
+ AccountData *data;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+
+ priv = GET_PRIV (manager);
+
+ data = g_hash_table_lookup (priv->accounts, account);
+ if (data && data->connection && tp_connection_is_ready (data->connection))
+ return data->connection;
+
+ return NULL;
+}
+
+GList *
+empathy_account_manager_dup_connections (EmpathyAccountManager *manager)
+{
+ EmpathyAccountManagerPriv *priv;
+ GHashTableIter iter;
+ gpointer connection;
+ GList *ret = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_MANAGER (manager), NULL);
+
+ priv = GET_PRIV (manager);
+
+ g_hash_table_iter_init (&iter, priv->connections);
+ while (g_hash_table_iter_next (&iter, &connection, NULL))
+ if (connection != NULL && tp_connection_is_ready (connection))
+ ret = g_list_prepend (ret, g_object_ref (connection));
+
+ return ret;
+}
+