From 9ec363e631e64c6e12ef9fb54d48113fcf82c1d8 Mon Sep 17 00:00:00 2001 From: eeff Date: Tue, 25 Jan 2022 23:40:04 +0800 Subject: [PATCH] Add function neu_manager_start_adapter_with_id --- src/core/neu_manager.c | 25 +++++++++++++++++++++++++ src/core/neu_manager.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/src/core/neu_manager.c b/src/core/neu_manager.c index a6bb1b2f..ba9a2aa8 100644 --- a/src/core/neu_manager.c +++ b/src/core/neu_manager.c @@ -2372,6 +2372,31 @@ int neu_manager_adapter_get_setting(neu_manager_t *manager, return ret; } +int neu_manager_start_adapter_with_id(neu_manager_t *manager, + neu_node_id_t node_id) +{ + adapter_id_t adapter_id = { 0 }; + adapter_reg_entity_t *reg_entity = NULL; + + nng_mtx_lock(manager->adapters_mtx); + + adapter_id = neu_manager_adapter_id_from_node_id(manager, node_id); + reg_entity = find_reg_adapter_by_id(&manager->reg_adapters, adapter_id); + + if (reg_entity == NULL) { + log_error("Can't find matched src registered adapter"); + nng_mtx_unlock(manager->adapters_mtx); + return NEU_ERR_NODE_NOT_EXIST; + } + + // TODO: this should better be outside of lock + neu_adapter_start(reg_entity->adapter); + + nng_mtx_unlock(manager->adapters_mtx); + + return NEU_ERR_SUCCESS; +} + int neu_manager_adapter_get_state(neu_manager_t *manager, neu_node_id_t node_id, neu_plugin_state_t *state) { diff --git a/src/core/neu_manager.h b/src/core/neu_manager.h index 0b988231..5619db36 100644 --- a/src/core/neu_manager.h +++ b/src/core/neu_manager.h @@ -87,6 +87,8 @@ int neu_manager_adapter_ctl(neu_manager_t *manager, neu_node_id_t node_id, int neu_manager_get_persist_adapter_infos(neu_manager_t *manager, vector_t ** result); int neu_manager_start_adapter(neu_adapter_t *adapter); +int neu_manager_start_adapter_with_id(neu_manager_t *manager, + neu_node_id_t node_id); int neu_manager_stop_adapter(neu_adapter_t *adapter); int neu_manager_init_adapter(neu_manager_t *manager, neu_adapter_t *adapter); int neu_manager_uninit_adapter(neu_manager_t *manager, neu_adapter_t *adapter);