summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2011-09-06 14:15:30 +0100
committerJonny Lamb <jonny.lamb@collabora.co.uk>2011-09-07 15:26:57 +0100
commite34fde96b5e3c5a766f66380e1e09a3f9a9074d2 (patch)
tree590fd979adfb6fa69ca06dd610dc13a45700504b
parent25c3f4dd8b9360cb531f0fc3a653094ce1e9b042 (diff)
presence-cache: add get_handle utility function
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r--src/presence-cache.c27
-rw-r--r--src/presence-cache.h3
2 files changed, 30 insertions, 0 deletions
diff --git a/src/presence-cache.c b/src/presence-cache.c
index 8917df39..52578bfc 100644
--- a/src/presence-cache.c
+++ b/src/presence-cache.c
@@ -2549,3 +2549,30 @@ gabble_presence_cache_disco_in_progress (GabblePresenceCache *cache,
return in_progress;
}
+
+typedef struct {
+ GabblePresence *presence;
+ TpHandle handle;
+} GetJidData;
+
+static void
+find_presence (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ GetJidData *data = user_data;
+
+ if (data->presence == value)
+ data->handle = GPOINTER_TO_UINT (key);
+}
+
+TpHandle
+gabble_presence_cache_get_handle (GabblePresenceCache *cache,
+ GabblePresence *presence)
+{
+ GetJidData data = { presence, 0 };
+
+ g_hash_table_foreach (cache->priv->presence, find_presence, &data);
+
+ return data.handle;
+}
diff --git a/src/presence-cache.h b/src/presence-cache.h
index 7305d15b..0e528396 100644
--- a/src/presence-cache.h
+++ b/src/presence-cache.h
@@ -144,6 +144,9 @@ GHashTable* gabble_presence_cache_get_location (GabblePresenceCache *cache,
gboolean gabble_presence_cache_disco_in_progress (GabblePresenceCache *cache,
TpHandle handle, const gchar *resource);
+TpHandle gabble_presence_cache_get_handle (GabblePresenceCache *cache,
+ GabblePresence *presence);
+
G_END_DECLS
#endif /* __GABBLE_PRESENCE_CACHE_H__ */