in agent/src/c/src/fsof_main.c [186:227]
static void fsof_provider_node_watcher(zhandle_t* zh, int type, int state,
const char* path, void* watcherCtx) {
struct String_vector *str_list = NULL;
struct timeval start = {0};
struct timeval end = {0};
int exec_time = 0;
if (type == ZOO_CHILD_EVENT) {
fsof_log_info(INFO,"%s children node has been changed ,need to get new children list\n",path);
if (strcmp(path,FSOF_ROOT_NAME) == 0) {
gettimeofday(&start,NULL);
str_list = fsof_zk_get_children(FSOF_ROOT_NAME);
gettimeofday(&end,NULL);
exec_time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); //calculate execute time
if (str_list != NULL) {
fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data succeed!|get_zookeeper|%d",g_str_localip,0,exec_time);
set_all_providers_watcher(str_list);
} else {
fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data failed!|get_zookeeper|%d",g_str_localip,-1,exec_time);
}
} else {
gettimeofday(&start,NULL);
str_list = fsof_zk_get_children(path);
gettimeofday(&end,NULL);
exec_time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); //calculate execute time
if (str_list != NULL) {
fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data succeed!|get_zookeeper|%d",g_str_localip,0,exec_time);
parse_provider_key(str_list,path);
} else {
fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data failed!|get_zookeeper|%d",g_str_localip,-1,exec_time);
}
}
if (str_list != NULL) {
deallocate_String_vector(str_list);
free(str_list);
}
}
}