aboutsummaryrefslogtreecommitdiff
path: root/src/messenger
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2021-07-24 23:44:11 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2021-07-24 23:44:11 +0200
commitaaeebebf670a2019a7ac8accb40e23cd923d396b (patch)
tree972a6033639c3b3f040da1b987c308e82e9e5ce6 /src/messenger
parentd63771f255057b27485c1fc96a0713d64d0ae1af (diff)
downloadgnunet-aaeebebf670a2019a7ac8accb40e23cd923d396b.tar.gz
gnunet-aaeebebf670a2019a7ac8accb40e23cd923d396b.zip
-added sent flag to messenger service
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat (limited to 'src/messenger')
-rw-r--r--src/messenger/gnunet-messenger.c7
-rw-r--r--src/messenger/gnunet-service-messenger_handle.c32
2 files changed, 35 insertions, 4 deletions
diff --git a/src/messenger/gnunet-messenger.c b/src/messenger/gnunet-messenger.c
index 094ae398d..28fa4b147 100644
--- a/src/messenger/gnunet-messenger.c
+++ b/src/messenger/gnunet-messenger.c
@@ -80,7 +80,12 @@ on_message (void *cls, struct GNUNET_MESSENGER_Room *room, const struct GNUNET_M
80 } 80 }
81 case GNUNET_MESSENGER_KIND_TEXT: 81 case GNUNET_MESSENGER_KIND_TEXT:
82 { 82 {
83 printf ("* '%s' says: \"%s\"\n", sender_name, message->body.text.text); 83 if (flags & GNUNET_MESSENGER_FLAG_SENT)
84 printf (">");
85 else
86 printf ("<");
87
88 printf (" '%s' says: \"%s\"\n", sender_name, message->body.text.text);
84 break; 89 break;
85 } 90 }
86 default: 91 default:
diff --git a/src/messenger/gnunet-service-messenger_handle.c b/src/messenger/gnunet-service-messenger_handle.c
index 4d2318d62..d7007dbf6 100644
--- a/src/messenger/gnunet-service-messenger_handle.c
+++ b/src/messenger/gnunet-service-messenger_handle.c
@@ -474,6 +474,28 @@ get_next_member_session_contect(const struct GNUNET_MESSENGER_MemberSession *ses
474 return get_member_session_context(session); 474 return get_member_session_context(session);
475} 475}
476 476
477static const struct GNUNET_MESSENGER_MemberSession*
478get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle, const struct GNUNET_HashCode *key)
479{
480 GNUNET_assert((handle) && (key) && (handle->service));
481
482 const struct GNUNET_ShortHashCode *id = get_handle_member_id(handle, key);
483 struct GNUNET_MESSENGER_SrvRoom *room = get_service_room(handle->service, key);
484
485 if ((!id) || (!room))
486 return NULL;
487
488 struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room);
489 struct GNUNET_MESSENGER_Member *member = get_store_member(store, id);
490
491 const struct GNUNET_MESSENGER_Ego *ego = get_handle_ego(handle);
492
493 if (!ego)
494 return NULL;
495
496 return get_member_session(member, &(ego->pub));
497}
498
477void 499void
478notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle, const struct GNUNET_HashCode *key, 500notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle, const struct GNUNET_HashCode *key,
479 const struct GNUNET_MESSENGER_MemberSession *session, 501 const struct GNUNET_MESSENGER_MemberSession *session,
@@ -523,9 +545,13 @@ notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle, const struct G
523 GNUNET_memcpy(&(msg->context), context, sizeof(msg->context)); 545 GNUNET_memcpy(&(msg->context), context, sizeof(msg->context));
524 GNUNET_memcpy(&(msg->hash), hash, sizeof(msg->hash)); 546 GNUNET_memcpy(&(msg->hash), hash, sizeof(msg->hash));
525 547
526 msg->flags = (uint32_t) ( 548 msg->flags = (uint32_t) GNUNET_MESSENGER_FLAG_NONE;
527 private_message? GNUNET_MESSENGER_FLAG_PRIVATE : GNUNET_MESSENGER_FLAG_NONE 549
528 ); 550 if (get_handle_member_session(handle, key) == session)
551 msg->flags |= (uint32_t) GNUNET_MESSENGER_FLAG_SENT;
552
553 if (private_message)
554 msg->flags |= (uint32_t) GNUNET_MESSENGER_FLAG_PRIVATE;
529 555
530 char *buffer = ((char*) msg) + sizeof(*msg); 556 char *buffer = ((char*) msg) + sizeof(*msg);
531 encode_message (message, length, buffer, GNUNET_YES); 557 encode_message (message, length, buffer, GNUNET_YES);