Exemplo n.º 1
0
Arquivo: seis.c Projeto: mangel45/esc
void initAutomata(const char *cad, int *p, int *c)
{
    *c = 0;
    if(*p < strlen(cad))
        q0(cad, p, c);
    fprintf(stdout, "La cadena \"ing\" fue encontrada %d veces\n", *c);

    inicializar();
    colorearPantalla();
    tituloVentana();

    estadoCualquiera(120.0, 250.0, "q0");
    estadoCualquiera(270.0, 250.0, "q1");
    estadoCualquiera(420.0, 250.0, "q2");
    estadoFinal(570.0, 250.0, "q3");
    grafoDirigido(120.0+40.0, 250.0, 270.0-40.0, 250.0, 1, "i");
    grafoDirigido(270.0+40.0, 250.0, 420.0-40.0, 250.0, 1, "n");
    grafoDirigido(420.0+40.0, 250.0, 570.0-40.0, 250.0, 1, "g");
    grafoDirigido(270.0, 250.0-40.0, 0.0, 0.0, 0, "i");
    grafoDirigido(110.0+40.0, 250.0+30, 280.0-40.0, 250.0+30, -1, "E-n");
    grafoDirigido(110.0+40.0, 190.0+30, 420.0-40.0, 190.0+30, -1, "E-n-g");

    al_flip_display();

    while(1)
    {
        al_wait_for_event(queue_evento, &evento);
        if(evento.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
            break;
    }

    about();
    finalizar();
}
Exemplo n.º 2
0
int main(int argc, char *argv[]) {
	signal(SIGUSR1, (void*) manejarSenial);
	logger = log_create("/home/utnso/personaje.log", "PERSONAJE", true, LOG_LEVEL_TRACE);
	log_info(logger, "Log creado con exito, se procede a loguear el proceso Personaje");

	log_debug(logger, "Chequeando el path del personaje...");
	if (argv[1] == NULL ) {
		log_error(logger, "El path del personaje no puede ser vacio.");
		log_destroy(logger);
		return EXIT_FAILURE;
	}

	path = argv[1];

	int levantarConfig = levantarPersonaje(path);
	if (levantarConfig == 1) {
		return EXIT_FAILURE;
	}

	enviarSeniales();

	int resultado = procesar();
	if (resultado == 1) {
		return EXIT_FAILURE;
	}

	finalizar();
	return EXIT_SUCCESS;
}
Exemplo n.º 3
0
int main(void){
    inicializar();

    colorearPantalla();
    al_draw_filled_circle(200, 160, 130.0, al_map_rgb_f(1.0, 0.0, 1.0));//Crear un círculo: x =200px,y =160px radio =130px,color morado: R=255, G=0, B=255
    al_flip_display(); // Dibujar en pantalla todo lo almacenado en el buffer, en este caso solamente está el círculo de arriba

    system("read -t 5"); // Cerrar la ventana después de 5 segundos (Linux)
    printf("Por Eder Or - www.multiaportes.com\n");

    finalizar();

    return 0;
}
Exemplo n.º 4
0
void executa(int cliSock, char *str)
{
    char *ops = strtok(str, " ");

  if (strcmp(ops,"registrar")==0){
    registrar(str);
  }
  else if (strcmp(ops,"listar\n")==0){
    listar();
  }
  else if (strcmp(ops,"finalizar\n")==0){
    finalizar();
  }
  else{
    sprintf(str, "Comando nao encontrado!\n");
  }
}
int32_t hiloEjecucionCPU(t_HiloCPU* paramsCPU)
{
	log_info(MemoriaLog,"Esperando pedidos de Cpu \n");

	int32_t codigoOperacion;
	codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket);
	if(codigoOperacion==-1)	{
		log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET);
		return EXIT_FAILURE;
	}
	while(codigoOperacion!=0) 	{

		switch(codigoOperacion)	{
		case codigo_iniciar:
			iniciar(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_finalizar:
			finalizar(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_leer:
			lectura(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		case codigo_escribir:
			escritura(paramsCPU->cpuSocket, paramsCPU->swapSocket);
			break;
		}

		codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket);
		if(codigoOperacion==-1) {
			log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET);
			return EXIT_FAILURE;
		}
	}

	if(codigoOperacion==0){
		log_info(MemoriaLog, "Se desconectó un CPU\n");
		bool PorCerrado(sock_t* socket){
			return socket->fd==0;
		}
		int32_t veces = list_count_satisfying(CPUsConectados,(void*)PorCerrado);
		int32_t it;
		for(it=0; it<veces; it++){
			list_remove_and_destroy_by_condition(CPUsConectados, (void*)PorCerrado, (void*)clean_socket);
		}
	}
Exemplo n.º 6
0
int main(){
carro *inicio=NULL,*fim=NULL;    
   int opc,contador=1;
   do{
   printf("\nDigite - '1' Entrada '2' Saida '3' Ordenar '0'finalizar\n ");
   scanf("%d",&opc);
   
   	if(opc==1){
   		inserir(&inicio,&fim,contador);
   		contador++;
   	}else if(opc==2){
	   	finalizar(&inicio);
	   	contador--;
	}else if(opc==3)
		ordem(&inicio,contador);

   }while(opc!=0);
  	 getch();
 return 0;  
}
Exemplo n.º 7
0
void initAutomata(const char *cad, int *p, int *c)
{
	*c = 0;
	if(*p < strlen(cad))
		q0(cad, p, c);

	if(*c == 1)
		fprintf(stdout, "La cadena tiene todos los valores pares de ceros y unos\n");
	else
		fprintf(stdout, "La cadena no cumple con la paridad de ceros y unos\n");

	inicializar();
	colorearPantalla();
	tituloVentana();

	estadoFinal(250.0, 150.0, "q0");
	estadoCualquiera(500.0, 150.0, "q1");
	estadoCualquiera(250.0, 400.0, "q3");
	estadoCualquiera(500.0, 400.0, "q2");
	grafoDirigido(250.0+40.0, 180.0, 500.0-40.0, 180.0, 1, "1");
	grafoDirigido(250.0+40.0, 130.0, 500.0-40.0, 130.0, -1, "1");
	grafoDirigido(250.0-30, 200.0, 250.0-30, 360, 11, "0");
	grafoDirigido(250.0+30, 200.0, 250.0+30, 360, -11, "0");
	grafoDirigido(250.0+40.0, 430.0, 500.0-40.0, 430.0, 1, "1");
	grafoDirigido(250.0+40.0, 370.0, 500.0-40.0, 370.0, -1, "1");
	grafoDirigido(500.0-30.0, 200.0, 500.0-30, 360, 11, "0");
	grafoDirigido(500.0+30.0, 200.0, 500.0+30, 360, -11, "0");

	al_flip_display();

	while(1)
	{
		al_wait_for_event(queue_evento, &evento);
		if(evento.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
            break;
	}

	about();
	finalizar();
}
Exemplo n.º 8
0
int perderVida(bool porDeadlock) {
	if (sacarVida(personaje) > 0) {
		if (porDeadlock) {
			log_debug(logger, "El personaje %s perdio una vida, ahora le quedan (%d), causa:DEADLOCK", personaje->nombre, personaje->vidas);
		} else {
			log_debug(logger, "El personaje %s perdio una vida, ahora le quedan (%d) causa:SIGTERM", personaje->nombre, personaje->vidas);
		}

		if (!porDeadlock) {
			log_debug(logger, "Notificando muerte al planificador. Personaje:%s", personaje->nombre);
			notificarMuerte(socketPlanificador);
			esperarConfirmacionDelPlanificador(socketPlanificador);
			log_debug(logger, "Notifico la liberacion de recursos. Personaje:%s", personaje->nombre);
			liberarRecursos(socketNivel);
		} else if (porDeadlock) {
			MPS_MSG* mensajeAEnviar = malloc(sizeof(MPS_MSG));
			mensajeAEnviar->PayloadDescriptor = MUERTE_POR_DEADLOCK;
			mensajeAEnviar->PayLoadLength = sizeof(char);
			mensajeAEnviar->Payload = personaje->simbolo;
			log_debug(logger, "Notifico muerte por deadlock al nivel. Personaje:%s", personaje->nombre);
			enviarMensaje(socketNivel, mensajeAEnviar);
			free(mensajeAEnviar);
		}
		MPS_MSG* mensajeARecibir = malloc(sizeof(MPS_MSG));
		recibirMensaje(socketNivel, mensajeARecibir);
		if (mensajeARecibir->PayloadDescriptor != MUERTE_CORRECTA) {
			return EXIT_FAILURE;
		}
		free(mensajeARecibir);
		close(socketPlanificador);
		close(socketNivel);
		int resultado = procesar();
		if (resultado == 1) {
			return EXIT_FAILURE;
		}
		finalizar();
	} else {
		if (porDeadlock) {
			log_debug(logger, "El personaje %s se quedo sin vidas, causa:DEADLOCK", personaje->nombre, personaje->vidas);
		} else {
			log_debug(logger, "El personaje %s se quedo sin vidas, causa:SIGTERM", personaje->nombre, personaje->vidas);
		}
		if (!porDeadlock) {
			log_debug(logger, "Notificando muerte al planificador. Personaje:%s", personaje->nombre);
			notificarMuerte(socketPlanificador);
			esperarConfirmacionDelPlanificador(socketPlanificador);
			log_debug(logger, "Notifico la liberacion de recursos. Personaje:%s", personaje->nombre);
			liberarRecursos(socketNivel);
		} else if (porDeadlock) {
			MPS_MSG* mensajeAEnviar = malloc(sizeof(MPS_MSG));
			mensajeAEnviar->PayloadDescriptor = MUERTE_POR_DEADLOCK;
			mensajeAEnviar->PayLoadLength = sizeof(char);
			mensajeAEnviar->Payload = personaje->simbolo;
			log_debug(logger, "Notifico muerte por deadlock al nivel. Personaje:%s", personaje->nombre);
			enviarMensaje(socketNivel, mensajeAEnviar);
			free(mensajeAEnviar);
		}
		MPS_MSG* mensajeARecibir = malloc(sizeof(MPS_MSG));
		recibirMensaje(socketNivel, mensajeARecibir);
		if (mensajeARecibir->PayloadDescriptor != MUERTE_CORRECTA) {
			return EXIT_FAILURE;
		}
		free(mensajeARecibir);
		close(socketPlanificador);
		close(socketNivel);
		int levantarConfig = levantarPersonaje(path);
		if (levantarConfig == 1) {
			return EXIT_FAILURE;
		}
		int resultado = procesar();
		if (resultado == 1) {
			return EXIT_FAILURE;
		}
		finalizar();
	}
	return EXIT_SUCCESS;
}