Merge pull request #724 from fengzeroz/main

feat(manager): count driver tag size
This commit is contained in:
fengzeroz
2022-08-22 15:20:33 +08:00
committed by GitHub
8 changed files with 65 additions and 0 deletions
+1
View File
@@ -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;
+11
View File
@@ -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;
}
+3
View File
@@ -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
+2
View File
@@ -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;
}
+22
View File
@@ -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)
{
+2
View File
@@ -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,
+20
View File
@@ -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;
+4
View File
@@ -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