/** * Analiza el fichero pasado en la llamada del programa. * @param fich nombre del fichero. * @return Si se hizo correctamente, se retorna la espera minima, sino 0 (false) para indicar falla. */ int analizar_fichero(char *fich) { FILE *fd = NULL; /*File descriptor del fichero de centros*/ char buffer[100]; /*Buffer de lectura para el archivo.*/ distr cent; /*Variable que representa un centro*/ char *nom, *DNS; /*Nombre y DNS de centro de distribucion*/ int puerto, respuesta; /*Puerto y tiempo de respuesta de centro de distribucion*/ int min_resp = MAX_INT; /*Tiempo de respuesta minimo de los centros de distribucion*/ int i; /*Variable de uso generico*/ /*Abre el archivo*/ if ((fd = fopen(fich, "r")) == NULL) { return errorFile(__LINE__); } /*Lee el archivo hasta el final*/ while (fscanf(fd, "%s", buffer) != EOF) { nom = strtok(buffer, "&"); DNS = strtok(NULL, "&"); puerto = atoi(strtok(NULL, "&")); /*Intenta conseguir una conexion con el servidor 5 veces, si no lo logra lo ignora*/ for (i = 0; i < 5; ++i) { /*Para conseguir el tiempo de respuesta de este servidor*/ if ((respuesta = conectar_centro('t', puerto, DNS)) >= 0) { break; } } /*Si no logro conectarse con el servidor*/ if (i == 5) { continue; } /*Si consegui un nuevo minimo tiempo de respuesta*/ if (respuesta < min_resp) { min_resp = respuesta; } if((cent = create_distr(nom, DNS, puerto, respuesta)) == NULL) { return -1; } if (!add(¢ros, cent)) { free(cent); } } /*Si no logro conectarse nunca*/ if (is_empty(centros)) { return 0; } return min_resp; }
int main(int argc, char *argv[]){ ij_net_t G1, G2; int N, m, m0, k_max; coupling_t matr; double gamma; distr_t delay_distr; char str[256]; if (argc < 10){ printf("Usage: %s <N> <m> <m0> <outfile> <a> <b> <c> <d> <gamma>\n", argv[0]); exit(1); } srand(time(NULL)); /* Diagonal coupling */ matr.a = atof(argv[5]); matr.b = atof(argv[6]); matr.c = atof(argv[7]); matr.d = atof(argv[8]); gamma = atof(argv[9]); N = atoi(argv[1]); m = atoi(argv[2]); m0 = atoi(argv[3]); G1.size = (N+m0) * m; G2.size = (N+m0) * m; init_structure(&G1, N); init_structure(&G2, N); G1.K = init_network(&G1, m0); G2.K = init_network(&G2, m0); delay_distr.N = N; delay_distr.gamma = gamma; delay_distr.x_min = 1; delay_distr.distr = malloc(N * sizeof(double)); create_distr(delay_distr.distr, delay_distr.gamma, delay_distr.x_min, N); init_times_delay(&G2, &delay_distr, m0, N); dump_times(&G2, N); fprintf(stderr, "Init finished!\n"); grow_multi_net_delay(&G1, &G2, N, m, m0, &matr); //printf("### G1\n"); sprintf(str, "%s_layer1.txt", argv[4]); dump_network_to_file(&G1, str); //printf("### G2\n"); sprintf(str, "%s_layer2.txt", argv[4]); dump_network_to_file(&G2, str); /* dump_network_to_file(S, S_num, argv[4]); */ /* printf("Network dumped!\n"); */ /* k_max = degree_distr(S, S_num, &distr); */ /* printf("k_max is: %d\n", k_max); */ /* dump_distr_to_file(distr, k_max, argv[5]); */ }