From 34cd23cc79468f5b564be2bb4617c1079302aca0 Mon Sep 17 00:00:00 2001 From: eeff <33566201+eeff@users.noreply.github.com> Date: Tue, 5 Mar 2024 17:20:15 +0800 Subject: [PATCH] fix(core): notify app about driver group deletion --- src/adapter/adapter.c | 5 ++++- src/core/manager.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c index 3b5f6c33..b8d01607 100644 --- a/src/adapter/adapter.c +++ b/src/adapter/adapter.c @@ -911,7 +911,10 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data) error.error = neu_adapter_driver_del_group( (neu_adapter_driver_t *) adapter, cmd->group); } else { - error.error = NEU_ERR_GROUP_NOT_ALLOW; + adapter->module->intf_funs->request( + adapter->plugin, (neu_reqresp_head_t *) header, &header[1]); + neu_msg_free(msg); + break; } if (error.error == NEU_ERR_SUCCESS) { diff --git a/src/core/manager.c b/src/core/manager.c index 573eb06b..581c148d 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1098,9 +1098,24 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data) neu_msg_exchange(header); reply(manager, header, &e); } else { + UT_array *apps = neu_subscribe_manager_find( + manager->subscribe_manager, cmd->driver, cmd->group); + forward_msg(manager, header, header->receiver); neu_subscribe_manager_remove(manager->subscribe_manager, cmd->driver, cmd->group); + + if (NULL == apps) { + break; + } + + // notify app node about group deletion + utarray_foreach(apps, neu_app_subscribe_t *, app) + { + forward_msg_copy(manager, header, app->app_name); + } + + utarray_free(apps); } break; }