void guardar_arch_bin(const char * path_bin,t_cola *cola,t_cola * cola2,t_empleado * emp) { FILE * pf; if(!(pf=fopen(path_bin,"wb"))) printf("No se pudo abrir el archivo %s\n",path_bin); else{ while(!colaVacia(cola)) { sacarDeCola(cola,emp); if(!colaLlena(cola2)) ponerEnCola(cola2,emp); } while(!colaVacia(cola2)) { sacarDeCola(cola2,emp); ponerEnCola(cola,emp); fwrite(cola,sizeof(t_cola),1,pf); } printf("%s se grabo correctamente\n",path_bin); fclose(pf); } }
void detectarYMatarPersonaje(t_queue *cola,nivelPlanificadorStruct *nivel) { t_log *log = log_create("Plataforma.log","Orquestador",true,LOG_LEVEL_INFO); simboloStruct *unSimbolo; listaPersonajesStruct *unPersonaje,*min; int32_t orden = 0; mensajePersonaje id; int socketNivel; id.idMensaje=4; while (!queue_is_empty(cola)) { unSimbolo = queue_pop(cola); bool condicion(void* personaje) { return (((listaPersonajesStruct*) personaje)->simbolo == unSimbolo->simbolo); } log_info(log,"Personaje en Interbloqueo: %c",unSimbolo->simbolo); unPersonaje = (listaPersonajesStruct *) list_find(nivel->listaPersonajes,condicion); if ((unPersonaje->ordenDeEntrada < min->ordenDeEntrada) || (orden == 0)) { min=unPersonaje; orden = 1; } } log_info(log,"%s llego tu hora de morir",min->nombre); socketSend(min->descriptorPersonaje,&id,sizeof(mensajePersonaje)); //log_info(nivel->log,"Mate a %s por Interbloqueo",min->nombre); sacarDeCola(nivel->bloqueados,min,'B',nivel->log,&(nivel->semColas)); //Esto es lo ultimo que agregamos. Ver si no perjudica en otro caso!! socketNivel = socketCreateClient(nivel->ipNivel, nivel->puertoNivel); personajeQueMurioStruct *identificador = malloc(sizeof(personajeQueMurioStruct)); identificador->id=3; identificador->simbolo=min->simbolo; socketSend(socketNivel,identificador,sizeof(personajeQueMurioStruct)); free(identificador); log_destroy(log); }
int main(void) { t_cola cola; t_info info; crearCola(&cola); while(!colaLlena(&cola) && ingresar(&info)) { ponerEnCola(&cola, &info); } if(!colaVacia(&cola)) { printf("Hay elementos en la cola, el primero es: "); if(verPrimeroCola(&cola, &info)) mostrar(&info); printf("\nSi vacio la cola"); vaciarCola(&cola); if(!sacarDeCola(&cola, &info)) printf("\nNo hay nada en la cola."); } return 0; }
void ejecutar(int opcion, t_cola *cola,t_cola *cola2,t_empleado *info) { switch(opcion) { case 1: puts("Cargar registro"); if(!colaLlena(cola)) { while(!colaLlena(cola)) { puts("Ingrese un registro: \n"); cargarInfo(info); //mostrarInfo(&info); if(ponerEnCola(cola,info)) puts("Se agrego un registro\n"); } }else puts("La cola ya esta cargada.\n\n"); break; case 2: if(!colaVacia(cola)) { while(!colaVacia(cola)) { //if(verPrimero(cola,info)) // mostrarInfo(info); if(sacarDeCola(cola,info)) { mostrarInfo(info); puts("\nSaque de Cola\n"); } } }else puts("La cola esta vacia.\n\n"); break; case 3: if(!colaVacia(cola)) { vaciarCola(cola); puts("cola vacia.\n\n"); } break; case 4: if(!colaVacia(cola)) { if(verPrimero(cola,info)); { puts("Primero: \n"); mostrarInfo(info); } }else puts("La cola esta vacia.\n\n"); break; case 5: if(!colaVacia(cola)){ guardar_arch_bin("cola.bin",cola, cola2,info); }else puts("La cola esta vacia.\n\n"); break; case 6: cargar_arch_bin("cola.bin",cola,info); break; case 7: if(TODO_OK==binario_a_texto("cola.bin","cola.txt")) puts("Se convirtio de binario a texto\n"); else puts("Error al querer convertir de binario a texto\n"); break; case 8: if(TODO_OK==texto_a_binario("cola.txt", "cola.bin")) puts("Se convirtio de texto a binario\n"); else puts("Error al querer convertir de texto a binario\n"); break; } system("pause"); }