mirror of
https://github.com/emqx/neuron.git
synced 2026-10-29 15:09:11 +08:00
Merge pull request #724 from fengzeroz/main
feat(manager): count driver tag size
This commit is contained in:
@@ -43,6 +43,7 @@ typedef struct neu_plugin_common {
|
||||
|
||||
neu_node_link_state_e link_state;
|
||||
uint16_t tag_size;
|
||||
uint32_t tag_all_size;
|
||||
int64_t timestamp;
|
||||
|
||||
zlog_category_t *log;
|
||||
|
||||
@@ -842,3 +842,14 @@ static void read_group(int64_t timestamp, int64_t timeout,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t neu_adapter_driver_tag_size(neu_adapter_driver_t *driver)
|
||||
{
|
||||
return neu_plugin_to_plugin_common(driver->adapter.plugin)->tag_size;
|
||||
}
|
||||
|
||||
void neu_adapter_driver_set_all_tag_size(neu_adapter_driver_t *driver,
|
||||
uint32_t size)
|
||||
{
|
||||
neu_plugin_to_plugin_common(driver->adapter.plugin)->tag_all_size = size;
|
||||
}
|
||||
@@ -58,4 +58,7 @@ void neu_adapter_driver_get_value_tag(neu_adapter_driver_t *driver,
|
||||
const char *group, UT_array **tags);
|
||||
UT_array *neu_adapter_driver_get_read_tag(neu_adapter_driver_t *driver,
|
||||
const char * group);
|
||||
uint16_t neu_adapter_driver_tag_size(neu_adapter_driver_t *driver);
|
||||
void neu_adapter_driver_set_all_tag_size(neu_adapter_driver_t *driver,
|
||||
uint32_t size);
|
||||
#endif
|
||||
|
||||
@@ -639,6 +639,8 @@ static int report_nodes_state(void *usr_data)
|
||||
neu_manager_t *manager = (neu_manager_t *) usr_data;
|
||||
UT_array * apps = neu_sub_msg_manager_get(manager->sub_msg_manager,
|
||||
NEU_SUBSCRIBE_NODES_STATE);
|
||||
|
||||
neu_manager_count_tag(manager);
|
||||
if (apps == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -117,6 +117,28 @@ UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type)
|
||||
return neu_node_manager_get(manager->node_manager, type);
|
||||
}
|
||||
|
||||
void neu_manager_count_tag(neu_manager_t *manager)
|
||||
{
|
||||
UT_array *drivers =
|
||||
neu_node_manager_get_adapter(manager->node_manager, NEU_NA_TYPE_DRIVER);
|
||||
uint32_t all_size = 0;
|
||||
|
||||
utarray_foreach(drivers, neu_adapter_t **, p_driver)
|
||||
{
|
||||
uint16_t size =
|
||||
neu_adapter_driver_tag_size((neu_adapter_driver_t *) (*p_driver));
|
||||
all_size += (uint32_t) size;
|
||||
}
|
||||
|
||||
utarray_foreach(drivers, neu_adapter_t **, p_driver)
|
||||
{
|
||||
neu_adapter_driver_set_all_tag_size(
|
||||
(neu_adapter_driver_t *) (*p_driver), all_size);
|
||||
}
|
||||
|
||||
utarray_free(drivers);
|
||||
}
|
||||
|
||||
int neu_manager_subscribe(neu_manager_t *manager, const char *app,
|
||||
const char *driver, const char *group)
|
||||
{
|
||||
|
||||
@@ -54,6 +54,8 @@ int neu_manager_add_node(neu_manager_t *manager, const char *node_name,
|
||||
int neu_manager_del_node(neu_manager_t *manager, const char *node_name);
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type);
|
||||
|
||||
void neu_manager_count_tag(neu_manager_t *manager);
|
||||
|
||||
int neu_manager_subscribe(neu_manager_t *manager, const char *app,
|
||||
const char *driver, const char *group);
|
||||
int neu_manager_unsubscribe(neu_manager_t *manager, const char *app,
|
||||
|
||||
@@ -189,6 +189,26 @@ UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr)
|
||||
return array;
|
||||
}
|
||||
|
||||
UT_array *neu_node_manager_get_adapter(neu_node_manager_t *mgr,
|
||||
neu_node_type_e type)
|
||||
{
|
||||
UT_array * array = NULL;
|
||||
node_entity_t *el = NULL, *tmp = NULL;
|
||||
|
||||
utarray_new(array, &ut_ptr_icd);
|
||||
|
||||
HASH_ITER(hh, mgr->nodes, el, tmp)
|
||||
{
|
||||
if (!el->is_static && el->display) {
|
||||
if (el->adapter->module->type == type) {
|
||||
utarray_push_back(array, &el->adapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
neu_adapter_t *neu_node_manager_find(neu_node_manager_t *mgr, const char *name)
|
||||
{
|
||||
neu_adapter_t *adapter = NULL;
|
||||
|
||||
@@ -46,6 +46,10 @@ uint16_t neu_node_manager_size(neu_node_manager_t *mgr);
|
||||
// neu_resp_node_info array
|
||||
UT_array *neu_node_manager_get(neu_node_manager_t *mgr, neu_node_type_e type);
|
||||
UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr);
|
||||
|
||||
// neu_adapter_t array
|
||||
UT_array * neu_node_manager_get_adapter(neu_node_manager_t *mgr,
|
||||
neu_node_type_e type);
|
||||
neu_adapter_t *neu_node_manager_find(neu_node_manager_t *mgr, const char *name);
|
||||
|
||||
// nng_pipe array
|
||||
|
||||
Reference in New Issue
Block a user