Esempio n. 1
0
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);

}
Esempio n. 3
0
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;
}
Esempio n. 4
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");
}