change names

This commit is contained in:
TXuian
2024-11-01 14:06:47 +08:00
parent 2f54409819
commit b586bd1247
8 changed files with 43 additions and 44 deletions

View File

@@ -59,7 +59,7 @@ void sys_tracer_init()
// set sys_tracer resource identity
tracer_init_node(&sys_tracer.root_node, NULL, TRACER_OWNER, NULL);
sys_tracer.root_node.name = root_name;
sys_tracer.sys_tracer_tag.meta = &sys_tracer.root_node;
sys_tracer.sys_tracer_tag.inner_node = &sys_tracer.root_node;
// init memory allocator
slab_init(&sys_tracer.node_allocator, sizeof(TracerNode), "TracerNodeAllocator");
@@ -68,7 +68,7 @@ void sys_tracer_init()
static char* parse_path(char* path, char* const name)
{
// skip extra '/'
// Skip extra '/'
while (*path == '/') {
path++;
}
@@ -76,21 +76,19 @@ static char* parse_path(char* path, char* const name)
return NULL;
}
// start of current name
// Start of current name
char* cur_start = path;
while (*path != '/' && *path != '\0') {
path++;
}
// handle current name
int len = path - cur_start;
// Handle current name
size_t len = path - cur_start;
if (len >= TRACER_NODE_NAME_LEN) {
strncpy(name, cur_start, TRACER_NODE_NAME_LEN - 1);
name[TRACER_NODE_NAME_LEN - 1] = '\0';
} else {
strncpy(name, cur_start, len);
name[len] = '\0';
len = TRACER_NODE_NAME_LEN - 1;
}
memcpy(name, cur_start, len);
name[len] = '\0';
return path;
}
@@ -122,40 +120,40 @@ bool AchieveResourceTag(TraceTag* target, TraceTag* owner, char* name)
{
static char name_buffer[TRACER_NODE_NAME_LEN];
TracerNode* inner_node = owner->meta;
TracerNode* inner_node = owner->inner_node;
assert(inner_node != NULL && inner_node->type == TRACER_OWNER);
while ((name = parse_path(name, name_buffer)) != NULL) {
if ((inner_node = tracer_find_node_onestep(inner_node, name_buffer)) == NULL) {
DEBUG("Tracer: No such object, owner: %s, child: %s\n", //
owner->meta->name == NULL ? "NULL" : owner->meta->name, name == NULL ? "NULL" : name_buffer);
owner->inner_node->name == NULL ? "NULL" : owner->inner_node->name, name == NULL ? "NULL" : name_buffer);
return false;
}
}
target->meta = inner_node;
target->inner_node = inner_node;
return true;
}
void* AchieveResource(TraceTag* tag)
{
assert(tag != NULL);
if (tag->meta == NULL || tag->meta->type == TRACER_OWNER) {
if (tag->inner_node == NULL || tag->inner_node->type == TRACER_OWNER) {
return NULL;
}
return tag->meta->p_resource;
return tag->inner_node->p_resource;
}
bool CreateResourceTag(TraceTag* new_tag, TraceTag* owner, char* name, tracemeta_ac_type type, void* p_resource)
{
assert(owner != NULL);
if (owner->meta == NULL) {
if (owner->inner_node == NULL) {
ERROR("Tracer: Empty owner, node name: %s\n", name);
return false;
}
// assert(owner->meta->type == TRACER_OWNER);
// assert(owner->inner_node->type == TRACER_OWNER);
if (type == TRACER_SERVER_IDENTITY_AC_RESOURCE && //
tracer_find_node_onestep(owner->meta, name) != NULL) {
tracer_find_node_onestep(owner->inner_node, name) != NULL) {
return false;
}
@@ -167,11 +165,11 @@ bool CreateResourceTag(TraceTag* new_tag, TraceTag* owner, char* name, tracemeta
tracer_init_node(new_node, name, type, p_resource);
// new node add to owner's children list
doubleListAddOnHead(&new_node->list_node, &owner->meta->children_guard);
new_node->parent = owner->meta;
doubleListAddOnHead(&new_node->list_node, &owner->inner_node->children_guard);
new_node->parent = owner->inner_node;
if (new_tag != NULL) {
new_tag->meta = new_node;
new_tag->inner_node = new_node;
}
return true;
}
@@ -179,30 +177,30 @@ bool CreateResourceTag(TraceTag* new_tag, TraceTag* owner, char* name, tracemeta
bool DeleteResource(TraceTag* target, TraceTag* owner)
{
assert(target != NULL && owner != NULL);
assert(owner->meta != NULL && owner->meta->type == TRACER_OWNER);
if (target->meta == NULL) {
ERROR("Tracer: Delete a empty resource, owner: %s\n", owner->meta->name);
assert(owner->inner_node != NULL && owner->inner_node->type == TRACER_OWNER);
if (target->inner_node == NULL) {
ERROR("Tracer: Delete a empty resource, owner: %s\n", owner->inner_node->name);
return false;
}
assert(target->meta->parent == owner->meta);
doubleListDel(&target->meta->list_node);
assert(target->inner_node->parent == owner->inner_node);
doubleListDel(&target->inner_node->list_node);
// delete name
if (target->meta->name != NULL) {
slab_free(&sys_tracer.node_name_allocator, target->meta->name);
if (target->inner_node->name != NULL) {
slab_free(&sys_tracer.node_name_allocator, target->inner_node->name);
}
// delete all children
if (target->meta->type == TRACER_OWNER) {
while (!IS_DOUBLE_LIST_EMPTY(&target->meta->children_guard)) {
if (target->inner_node->type == TRACER_OWNER) {
while (!IS_DOUBLE_LIST_EMPTY(&target->inner_node->children_guard)) {
TraceTag tmp_node = {
.meta = DOUBLE_LIST_ENTRY(target->meta->children_guard.next, TracerNode, list_node),
.inner_node = DOUBLE_LIST_ENTRY(target->inner_node->children_guard.next, TracerNode, list_node),
};
DeleteResource(&tmp_node, target);
}
}
slab_free(&sys_tracer.node_allocator, target->meta);
target->meta = NULL;
slab_free(&sys_tracer.node_allocator, target->inner_node);
target->inner_node = NULL;
return true;
}
@@ -237,6 +235,6 @@ void debug_list_tracetree_inner(TracerNode* cur_node, int nr_blanks)
void debug_list_tracetree()
{
TracerNode* ref_root = RequireRootTag()->meta;
TracerNode* ref_root = RequireRootTag()->inner_node;
debug_list_tracetree_inner(ref_root, 0);
}