void orqTerminoTodo(void) { _Bool noHayNadieMas = true; int i; nivel_t* nivelLevantador; for (i = 0; i < list_size(l_niveles); i++) { nivelLevantador = list_get(l_niveles, i); //Tiene que no haber nadie mas en todos los niveles noHayNadieMas = noHayNadieMas && ((list_size(nivelLevantador->l_personajesRdy) == 0) && (list_size(nivelLevantador->l_personajesBlk) == 0)); } if (noHayNadieMas) { log_info(logger, "Termino todo bien."); //Forzar cerrar niveles (personajes tendrian que estar cerrados) chdir("../../koopa/"); //TODO caundo haga los makefiles, tenemos que editar este //feedKoopa es global :D if (system(feedKoopa)) { log_trace(logger, "Orquestador finalizó exitosamente"); cerrarTodo(EXIT_SUCCESS); } else { log_trace(logger, "Error en feedKoopa"); cerrarTodo(EXIT_FAILURE); } } }
void verificarKoopa(char *sPayload){ tSimbolo *simbolo = deserializarSimbolo(sPayload); free(sPayload); log_info(logger, "El personaje %c finalizo su ejecucion", *simbolo); bool _search_symbol(t_estado_personaje *personaje){ return(personaje->simbolo == *simbolo); } t_estado_personaje *personaje = list_remove_by_condition(personajes_jugando, (void *)_search_symbol); free(personaje); if(list_size(personajes_jugando) == 0){ log_debug(logger, "No hay tipitos jugando entonces ejecuto koopa y cierro todo"); cerrarTodo(); executeKoopa(pathScript); exit(EXIT_SUCCESS); } }