libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit 8842c8b412921fe9318d2caf0a418257b72cf31d
parent 1b50f47306d56da32daab8bfa72cf994dece043b
Author: Jacki <jacki@thejackimonster.de>
Date:   Sat, 10 Feb 2024 04:39:25 +0100

Add internal logout message to free resources on application level

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
Minclude/gnunet/gnunet_chat_lib.h | 24+++++++++++++++---------
Msrc/gnunet_chat_handle.c | 7+++++++
Msrc/gnunet_chat_lib.c | 2++
Msrc/gnunet_chat_message.h | 3++-
4 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/include/gnunet/gnunet_chat_lib.h b/include/gnunet/gnunet_chat_lib.h @@ -72,49 +72,55 @@ enum GNUNET_CHAT_MessageKind GNUNET_CHAT_KIND_LOGIN = 3, /**< GNUNET_CHAT_KIND_LOGIN */ /** + * The kind to inform that the application needs to cleanup + * resources related to the currently connected account. + */ + GNUNET_CHAT_KIND_LOGOUT = 4, /**< GNUNET_CHAT_KIND_LOGOUT */ + + /** * The kind to inform that a context was updated. */ - GNUNET_CHAT_KIND_UPDATE = 4, /**< GNUNET_CHAT_KIND_UPDATE */ + GNUNET_CHAT_KIND_UPDATE = 5, /**< GNUNET_CHAT_KIND_UPDATE */ /** * The kind to inform that a contact has joined a chat. */ - GNUNET_CHAT_KIND_JOIN = 5, /**< GNUNET_CHAT_KIND_JOIN */ + GNUNET_CHAT_KIND_JOIN = 6, /**< GNUNET_CHAT_KIND_JOIN */ /** * The kind to inform that a contact has left a chat. */ - GNUNET_CHAT_KIND_LEAVE = 6, /**< GNUNET_CHAT_KIND_LEAVE */ + GNUNET_CHAT_KIND_LEAVE = 7, /**< GNUNET_CHAT_KIND_LEAVE */ /** * The kind to inform that a contact has changed. */ - GNUNET_CHAT_KIND_CONTACT = 7, /**< GNUNET_CHAT_KIND_CONTACT */ + GNUNET_CHAT_KIND_CONTACT = 8, /**< GNUNET_CHAT_KIND_CONTACT */ /** * The kind to describe an invitation to a different chat. */ - GNUNET_CHAT_KIND_INVITATION = 8, /**< GNUNET_CHAT_KIND_INVITATION */ + GNUNET_CHAT_KIND_INVITATION = 9, /**< GNUNET_CHAT_KIND_INVITATION */ /** * The kind to describe a text message. */ - GNUNET_CHAT_KIND_TEXT = 9, /**< GNUNET_CHAT_KIND_TEXT */ + GNUNET_CHAT_KIND_TEXT = 10, /**< GNUNET_CHAT_KIND_TEXT */ /** * The kind to describe a shared file. */ - GNUNET_CHAT_KIND_FILE = 10, /**< GNUNET_CHAT_KIND_FILE */ + GNUNET_CHAT_KIND_FILE = 11, /**< GNUNET_CHAT_KIND_FILE */ /** * The kind to inform about a deletion of a previous message. */ - GNUNET_CHAT_KIND_DELETION = 11, /**< GNUNET_CHAT_KIND_DELETION */ + GNUNET_CHAT_KIND_DELETION = 12, /**< GNUNET_CHAT_KIND_DELETION */ /** * The kind to tag a previous message. */ - GNUNET_CHAT_KIND_TAG = 12, /**< GNUNET_CHAT_KIND_TAG */ + GNUNET_CHAT_KIND_TAG = 13, /**< GNUNET_CHAT_KIND_TAG */ /** * An unknown kind of message. diff --git a/src/gnunet_chat_handle.c b/src/gnunet_chat_handle.c @@ -377,6 +377,13 @@ handle_disconnect (struct GNUNET_CHAT_Handle *handle) (handle->files) ); + handle_send_internal_message( + handle, + NULL, + GNUNET_CHAT_FLAG_LOGOUT, + NULL + ); + GNUNET_CONTAINER_multihashmap_iterate( handle->groups, it_destroy_handle_groups, NULL ); diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c @@ -1584,6 +1584,8 @@ GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message) return GNUNET_CHAT_KIND_REFRESH; case GNUNET_CHAT_FLAG_LOGIN: return GNUNET_CHAT_KIND_LOGIN; + case GNUNET_CHAT_FLAG_LOGOUT: + return GNUNET_CHAT_KIND_LOGOUT; case GNUNET_CHAT_FLAG_UPDATE: return GNUNET_CHAT_KIND_UPDATE; default: diff --git a/src/gnunet_chat_message.h b/src/gnunet_chat_message.h @@ -45,7 +45,8 @@ enum GNUNET_CHAT_MessageFlag GNUNET_CHAT_FLAG_WARNING = 1, GNUNET_CHAT_FLAG_REFRESH = 2, GNUNET_CHAT_FLAG_LOGIN = 3, - GNUNET_CHAT_FLAG_UPDATE = 4 + GNUNET_CHAT_FLAG_LOGOUT = 4, + GNUNET_CHAT_FLAG_UPDATE = 5 }; struct GNUNET_CHAT_Message