diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-09-06 14:15:30 +0100 |
---|---|---|
committer | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-09-07 15:26:57 +0100 |
commit | e34fde96b5e3c5a766f66380e1e09a3f9a9074d2 (patch) | |
tree | 590fd979adfb6fa69ca06dd610dc13a45700504b | |
parent | 25c3f4dd8b9360cb531f0fc3a653094ce1e9b042 (diff) |
presence-cache: add get_handle utility function
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r-- | src/presence-cache.c | 27 | ||||
-rw-r--r-- | src/presence-cache.h | 3 |
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__ */ |