change names
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user