aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/messenger_api_room.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/messenger_api_room.c')
-rw-r--r--src/messenger/messenger_api_room.c36
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
309struct GNUNET_MESSENGER_MemberFind
310{
311 struct GNUNET_MESSENGER_Contact *contact;
312 int result;
313};
314
315static int
316iterate_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
330int
331find_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}