aboutsummaryrefslogtreecommitdiff
path: root/src/gnunet_chat_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet_chat_lib.c')
-rw-r--r--src/gnunet_chat_lib.c68
1 files changed, 63 insertions, 5 deletions
diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c
index 3e97d3e..794b170 100644
--- a/src/gnunet_chat_lib.c
+++ b/src/gnunet_chat_lib.c
@@ -948,11 +948,12 @@ GNUNET_CHAT_contact_set_blocked (struct GNUNET_CHAT_Contact *contact,
948 948
949 struct GNUNET_CHAT_ContactIterateContexts it; 949 struct GNUNET_CHAT_ContactIterateContexts it;
950 it.contact = contact; 950 it.contact = contact;
951 it.tag = NULL;
951 952
952 if (GNUNET_NO == blocked) 953 if (GNUNET_NO == blocked)
953 it.cb = contact_unblock; 954 it.cb = contact_untag;
954 else if (GNUNET_YES == blocked) 955 else if (GNUNET_YES == blocked)
955 it.cb = contact_block; 956 it.cb = contact_tag;
956 else 957 else
957 return; 958 return;
958 959
@@ -972,7 +973,64 @@ GNUNET_CHAT_contact_is_blocked (const struct GNUNET_CHAT_Contact *contact)
972 if (!contact) 973 if (!contact)
973 return GNUNET_SYSERR; 974 return GNUNET_SYSERR;
974 975
975 return contact_is_blocked(contact, NULL); 976 return contact_is_tagged(contact, NULL, NULL);
977}
978
979
980void
981GNUNET_CHAT_contact_tag (struct GNUNET_CHAT_Contact *contact,
982 const char *tag)
983{
984 GNUNET_CHAT_VERSION_ASSERT();
985
986 if ((!contact) || (!tag) || (!tag[0]))
987 return;
988
989 struct GNUNET_CHAT_ContactIterateContexts it;
990 it.contact = contact;
991 it.tag = tag;
992 it.cb = contact_tag;
993
994 GNUNET_CONTAINER_multihashmap_iterate(
995 contact->joined,
996 it_contact_iterate_contexts,
997 &it
998 );
999}
1000
1001
1002void
1003GNUNET_CHAT_contact_untag (struct GNUNET_CHAT_Contact *contact,
1004 const char *tag)
1005{
1006 GNUNET_CHAT_VERSION_ASSERT();
1007
1008 if ((!contact) || (!tag) || (!tag[0]))
1009 return;
1010
1011 struct GNUNET_CHAT_ContactIterateContexts it;
1012 it.contact = contact;
1013 it.tag = tag;
1014 it.cb = contact_untag;
1015
1016 GNUNET_CONTAINER_multihashmap_iterate(
1017 contact->joined,
1018 it_contact_iterate_contexts,
1019 &it
1020 );
1021}
1022
1023
1024enum GNUNET_GenericReturnValue
1025GNUNET_CHAT_contact_is_tagged (const struct GNUNET_CHAT_Contact *contact,
1026 const char *tag)
1027{
1028 GNUNET_CHAT_VERSION_ASSERT();
1029
1030 if ((!contact) || (!tag) || (!tag[0]))
1031 return GNUNET_SYSERR;
1032
1033 return contact_is_tagged(contact, NULL, tag);
976} 1034}
977 1035
978 1036
@@ -1623,7 +1681,7 @@ GNUNET_CHAT_message_get_sender (const struct GNUNET_CHAT_Message *message)
1623{ 1681{
1624 GNUNET_CHAT_VERSION_ASSERT(); 1682 GNUNET_CHAT_VERSION_ASSERT();
1625 1683
1626 if ((!message) || (GNUNET_CHAT_FLAG_NONE != message->flag) || 1684 if ((!message) || (GNUNET_YES != message_has_msg(message)) ||
1627 (!(message->context)) || (!(message->context->room))) 1685 (!(message->context)) || (!(message->context->room)))
1628 return NULL; 1686 return NULL;
1629 1687
@@ -1643,7 +1701,7 @@ GNUNET_CHAT_message_get_recipient (const struct GNUNET_CHAT_Message *message)
1643{ 1701{
1644 GNUNET_CHAT_VERSION_ASSERT(); 1702 GNUNET_CHAT_VERSION_ASSERT();
1645 1703
1646 if ((!message) || (GNUNET_CHAT_FLAG_NONE != message->flag) || 1704 if ((!message) || (GNUNET_YES != message_has_msg(message)) ||
1647 (!(message->context)) || (!(message->context->room))) 1705 (!(message->context)) || (!(message->context->room)))
1648 return NULL; 1706 return NULL;
1649 1707