refactor: manager internal template tags management

This commit is contained in:
eeff
2023-04-14 17:48:58 +08:00
parent 6e7985f173
commit dfa3c79475
3 changed files with 45 additions and 28 deletions
+18 -28
View File
@@ -233,17 +233,13 @@ int neu_manager_add_template_tags(neu_manager_t * manager,
neu_req_add_template_tag_t *req,
uint16_t * index_p)
{
int ret = 0;
int ret = 0;
neu_group_t *grp = NULL;
neu_template_t *tmpl =
neu_template_manager_find(manager->template_manager, req->tmpl);
if (NULL == tmpl) {
return NEU_ERR_TEMPLATE_NOT_FOUND;
}
neu_group_t *grp = neu_template_get_group(tmpl, req->group);
if (NULL == grp) {
return NEU_ERR_GROUP_NOT_EXIST;
ret = neu_template_manager_find_group(manager->template_manager, req->tmpl,
req->group, &grp);
if (0 != ret) {
return ret;
}
int i = 0;
@@ -264,17 +260,13 @@ int neu_manager_update_template_tags(neu_manager_t * manager,
neu_req_update_template_tag_t *req,
uint16_t * index_p)
{
int ret = 0;
int ret = 0;
neu_group_t *grp = NULL;
neu_template_t *tmpl =
neu_template_manager_find(manager->template_manager, req->tmpl);
if (NULL == tmpl) {
return NEU_ERR_TEMPLATE_NOT_FOUND;
}
neu_group_t *grp = neu_template_get_group(tmpl, req->group);
if (NULL == grp) {
return NEU_ERR_GROUP_NOT_EXIST;
ret = neu_template_manager_find_group(manager->template_manager, req->tmpl,
req->group, &grp);
if (0 != ret) {
return ret;
}
int i = 0;
@@ -294,15 +286,13 @@ int neu_manager_update_template_tags(neu_manager_t * manager,
int neu_manager_del_template_tags(neu_manager_t * manager,
neu_req_del_template_tag_t *req)
{
neu_template_t *tmpl =
neu_template_manager_find(manager->template_manager, req->tmpl);
if (NULL == tmpl) {
return NEU_ERR_TEMPLATE_NOT_FOUND;
}
int ret = 0;
neu_group_t *grp = NULL;
neu_group_t *grp = neu_template_get_group(tmpl, req->group);
if (NULL == grp) {
return NEU_ERR_GROUP_NOT_EXIST;
ret = neu_template_manager_find_group(manager->template_manager, req->tmpl,
req->group, &grp);
if (0 != ret) {
return ret;
}
int i = 0;
+21
View File
@@ -103,6 +103,27 @@ neu_template_t *neu_template_manager_find(const neu_template_manager_t *mgr,
return ent ? ent->tmpl : NULL;
}
int neu_template_manager_find_group(const neu_template_manager_t *mgr,
const char *name, const char *group_name,
neu_group_t **group_p)
{
neu_template_t *tmpl = neu_template_manager_find(mgr, name);
if (NULL == tmpl) {
return NEU_ERR_TEMPLATE_NOT_FOUND;
}
neu_group_t *grp = neu_template_get_group(tmpl, group_name);
if (NULL == grp) {
return NEU_ERR_GROUP_NOT_EXIST;
}
if (group_p) {
*group_p = grp;
}
return 0;
}
int neu_template_manager_for_each(neu_template_manager_t *mgr,
int (*cb)(neu_template_t *tmpl, void *data),
void *data)
+6
View File
@@ -39,6 +39,12 @@ int neu_template_manager_del(neu_template_manager_t *mgr, const char *name);
neu_template_t *neu_template_manager_find(const neu_template_manager_t *mgr,
const char * name);
// NOTE: ownership of the return group belongs to the manager.
// user must not alter the name of the return group.
int neu_template_manager_find_group(const neu_template_manager_t *mgr,
const char *name, const char *group_name,
neu_group_t **group_p);
// Iterate through templates and apply `cb` each.
// NOTE: `cb` must not alter the name or plugin of the template.
// `cb` must not delete the template.