Merge pull request #451 from fengzeroz/main

refactor(driver): remove add_group/del_group
This commit is contained in:
fengzeroz
2022-04-27 14:44:09 +08:00
committed by GitHub
2 changed files with 18 additions and 23 deletions
+6 -7
View File
@@ -43,12 +43,15 @@ typedef struct neu_plugin_common {
typedef struct neu_plugin neu_plugin_t;
typedef struct neu_plugin_group {
typedef struct neu_plugin_group neu_plugin_group_t;
typedef void (*neu_plugin_group_free)(neu_plugin_group_t *pgp);
struct neu_plugin_group {
char * group_name;
UT_array *tags;
void *ctx;
} neu_plugin_group_t;
void * user_data;
neu_plugin_group_free group_free;
};
typedef struct neu_plugin_intf_funs {
neu_plugin_t *(*open)(neu_adapter_t * adapter,
@@ -67,10 +70,6 @@ typedef struct neu_plugin_intf_funs {
union {
struct {
int (*validate_tag)(neu_plugin_t *plugin, neu_datatag_t *tag);
void (*add_group)(neu_plugin_t * plugin,
neu_plugin_group_t *new_group);
void (*del_group)(neu_plugin_t * plugin,
neu_plugin_group_t *old_group);
int (*group_timer)(neu_plugin_t *plugin, neu_plugin_group_t *group);
int (*write_tag)(neu_plugin_t *plugin, uint32_t req_id,
neu_datatag_t *tag, neu_value_u value);
+12 -16
View File
@@ -179,11 +179,10 @@ int neu_adapter_driver_uninit(neu_adapter_driver_t *driver)
pthread_mutex_lock(&driver->grp_mtx);
HASH_ITER(hh, driver->grps, sg, tmp)
{
driver->adapter.plugin_info.module->intf_funs->driver.del_group(
driver->adapter.plugin_info.plugin, &sg->grp);
HASH_DEL(driver->grps, sg);
neu_adapter_del_timer((neu_adapter_t *) driver, sg->report);
neu_event_del_timer(driver->driver_events, sg->read);
sg->grp.group_free(&sg->grp);
free(sg);
}
@@ -268,8 +267,6 @@ void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver,
sg->name = strdup(neu_taggrp_cfg_get_name(sg->group));
sg->grp.group_name = strdup(neu_taggrp_cfg_get_name(sg->group));
load_tags(driver, sg->group, &sg->grp.tags);
driver->adapter.plugin_info.module->intf_funs->driver.add_group(
driver->adapter.plugin_info.plugin, &sg->grp);
pthread_mutex_lock(&driver->grp_mtx);
HASH_ADD_STR(driver->grps, name, sg);
@@ -291,18 +288,17 @@ void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver,
HASH_FIND_STR(driver->grps,
neu_taggrp_cfg_get_name(unsub_req->grp_config), sg);
if (sg != NULL) {
driver->adapter.plugin_info.module->intf_funs->driver.del_group(
driver->adapter.plugin_info.plugin, &sg->grp);
HASH_DEL(driver->grps, sg);
neu_adapter_del_timer((neu_adapter_t *) driver, sg->report);
neu_event_del_timer(driver->driver_events, sg->read);
sg->grp.group_free(&sg->grp);
for (neu_datatag_t **tag =
(neu_datatag_t **) utarray_front(sg->grp.tags);
tag != NULL;
tag = (neu_datatag_t **) utarray_next(sg->grp.tags, tag)) {
neu_driver_cache_del(driver->cache, (*tag)->name);
}
HASH_DEL(driver->grps, sg);
neu_adapter_del_timer((neu_adapter_t *) driver, sg->report);
neu_event_del_timer(driver->driver_events, sg->read);
free(sg);
}
// assert(sg != NULL);
@@ -353,8 +349,7 @@ static int read_callback(void *usr_data)
neu_taggrp_cfg_get_name(sg->group));
assert(new_config != NULL);
sg->driver->adapter.plugin_info.module->intf_funs->driver.del_group(
sg->driver->adapter.plugin_info.plugin, &sg->grp);
sg->grp.group_free(&sg->grp);
for (neu_datatag_t **tag =
(neu_datatag_t **) utarray_front(sg->grp.tags);
@@ -362,12 +357,13 @@ static int read_callback(void *usr_data)
tag = (neu_datatag_t **) utarray_next(sg->grp.tags, tag)) {
neu_driver_cache_del(sg->driver->cache, (*tag)->name);
}
neu_plugin_group_t grp = { .group_name = sg->grp.group_name };
neu_plugin_group_t grp = {
.group_name = sg->grp.group_name,
.group_free = NULL,
.user_data = NULL,
};
load_tags(sg->driver, new_config, &grp.tags);
sg->driver->adapter.plugin_info.module->intf_funs->driver.add_group(
sg->driver->adapter.plugin_info.plugin, &grp);
sg->group = new_config;
free_tags(sg->grp.tags);
sg->grp = grp;