diff options
Diffstat (limited to 'src/messenger/messenger_api_room.c')
-rw-r--r-- | src/messenger/messenger_api_room.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/messenger/messenger_api_room.c b/src/messenger/messenger_api_room.c index 5b7edee60..6779984bd 100644 --- a/src/messenger/messenger_api_room.c +++ b/src/messenger/messenger_api_room.c | |||
@@ -305,3 +305,39 @@ iterate_room_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_Membe | |||
305 | 305 | ||
306 | return GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_local_members, &call); | 306 | return GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_local_members, &call); |
307 | } | 307 | } |
308 | |||
309 | struct GNUNET_MESSENGER_MemberFind | ||
310 | { | ||
311 | struct GNUNET_MESSENGER_Contact *contact; | ||
312 | int result; | ||
313 | }; | ||
314 | |||
315 | static int | ||
316 | iterate_find_member (void* cls, const struct GNUNET_ShortHashCode *key, void *value) | ||
317 | { | ||
318 | struct GNUNET_MESSENGER_MemberFind *find = cls; | ||
319 | struct GNUNET_MESSENGER_Contact *contact = value; | ||
320 | |||
321 | if (contact == find->contact) | ||
322 | { | ||
323 | find->result = GNUNET_YES; | ||
324 | return GNUNET_NO; | ||
325 | } | ||
326 | |||
327 | return GNUNET_YES; | ||
328 | } | ||
329 | |||
330 | int | ||
331 | find_room_member (const struct GNUNET_MESSENGER_Room *room, const struct GNUNET_MESSENGER_Contact *contact) | ||
332 | { | ||
333 | GNUNET_assert(room); | ||
334 | |||
335 | struct GNUNET_MESSENGER_MemberFind find; | ||
336 | |||
337 | find.contact = contact; | ||
338 | find.result = GNUNET_NO; | ||
339 | |||
340 | GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_find_member, &find); | ||
341 | |||
342 | return find.result; | ||
343 | } | ||