static void set_all_providers_watcher()

in agent/src/c/src/fsof_main.c [281:324]


static void set_all_providers_watcher(struct String_vector *list) {
    struct String_vector *provider_list = NULL;
    char provider_key[512] = {0};
    struct timeval start = {0};
    struct timeval end   = {0};
    int exec_time = 0;
    int i;

    for (i = 0; i < list->count; i++) {
        sprintf(provider_key,"%s/%s%s",FSOF_ROOT_NAME,list->data[i],PROVIDER_NAME);
        fsof_zk_add_listener(provider_key,fsof_provider_node_watcher);
        gettimeofday(&start,NULL);
        provider_list = fsof_zk_get_children(provider_key); 
        gettimeofday(&end,NULL);
        exec_time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); //calculate execute time
        
        if (provider_list == NULL) {
            fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data failed!|get_zookeeper|%d",g_str_localip,-1,exec_time);
            memset(provider_key,0,sizeof(provider_key));
            sprintf(provider_key,"%s/%s",FSOF_ROOT_NAME,list->data[i]);
            fsof_zk_add_listener(provider_key,fsof_service_node_watcher);
            gettimeofday(&start,NULL);
            provider_list = fsof_zk_get_children(provider_key);
            gettimeofday(&end,NULL);
            exec_time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); //calculate execute time

            if (provider_list == NULL) {
                fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data failed!|get_zookeeper|%d",g_str_localip,-1,exec_time);
            } else {
                fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data succeed!|get_zookeeper|%d",g_str_localip,0,exec_time);
            }
        }else {
            //enum_provider_list(provider_list,provider_key);
            fsof_log_info(INFO,"%s|FSOF_AGENT|%d|get zookeeper data succeed!|get_zookeeper|%d",g_str_localip,0,exec_time);
            parse_provider_key(provider_list,provider_key);
        }

        memset(provider_key,0,sizeof(provider_key));
        if (provider_list != NULL) {
            deallocate_String_vector(provider_list);
            free(provider_list);
        }
    }    
}