Browse Source

Own group avatar synchronization in the chat service lifecycle

master
evgeny 6 days ago
parent
commit
56897368b3
  1. 2
      src/Makefile.am
  2. 2
      src/chat/chat_channel.c
  3. 5
      src/chat/chat_sync.c

2
src/Makefile.am

@ -111,6 +111,7 @@ utun_CORE_SOURCES = \
chat/chat_whisper.c \
chat/chat_channel.c \
chat/chat_profile.c \
chat/group_avatar.c \
chat/chat_status.c \
chat/chat_sync.c \
chat/chat_admin.c \
@ -243,6 +244,7 @@ libutun_a_SOURCES = \
chat/chat_msg.c \
chat/chat_channel.c \
chat/chat_profile.c \
chat/group_avatar.c \
chat/chat_status.c \
chat/chat_sync.c \
chat/chat_admin.c \

2
src/chat/chat_channel.c

@ -5,6 +5,7 @@
*/
#include "chat_core_priv.h"
#include "group_avatar.h"
#include "chat_event.h"
#include "chat_setting.h"
@ -338,6 +339,7 @@ void chat_core_delete_channel(struct UTUN_INSTANCE* inst, const char* ch_id) {
/* 1. отмена медиа-загрузок/релэев/суперузлов канала (держат conn_mgr handle группы) */
media_delivery_cancel_channel(inst, gid);
member_files_cancel_group(inst, gid);
group_avatar_cancel_group(inst, gid);
/* 2. снять merkle-сессии этого namespace */
member_sync_cancel_channel(inst, ch_id);

5
src/chat/chat_sync.c

@ -6,6 +6,7 @@
#include "chat_event.h"
#include "chat_admin.h"
#include "chat_join.h"
#include "group_avatar.h"
#include "../routing_layer/topo_node_sqlite.h"
#include "../routing_layer/topo_group.h"
#include "../routing_layer/topo_group_invite.h"
@ -752,6 +753,9 @@ int chat_sync_init(struct UTUN_INSTANCE* inst) {
DEBUG_ERROR(DEBUG_CATEGORY_MEMBER_SYNC, "%s: member synchronization initialization failed", CS_ID);
inst->chat_sync = NULL; u_free(cs); return -1;
}
if (group_avatar_init(inst) < 0) {
member_sync_destroy(inst); inst->chat_sync = NULL; u_free(cs); return -1;
}
etcp_bind(inst, ETCP_RT_ID_CHAT_SYNC, chat_sync_recv_cb);
etcp_add_conn_status_cbk(inst, cs_on_conn_status, cs);
@ -782,6 +786,7 @@ void chat_sync_destroy(struct UTUN_INSTANCE* inst) {
member_sync_remove_apply_cbk(inst, cs_on_member_applied, cs);
utun_remove_peer_sleep_cbk(inst, cs_on_peer_sleep, cs);
cs_pending_free_all(cs);
group_avatar_destroy(inst);
member_sync_destroy(inst);
chat_admin_destroy(inst);
chat_join_destroy(inst);

Loading…
Cancel
Save