int main(int argc, char** argv) { if(argc != 2){ puts("No se ingreso la ruta del archivo de configuracion\n"); return 0; } thread_socket= 3030; paginaEncontrada=TRUE; umclog=malloc(sizeof(t_log)); memcpy(umclog,log_create("umc.log", "UMC", TRUE, LOG_LEVEL_TRACE), sizeof(t_log)); leerArchivoDeConfiguracion(argv[1]); crearLogger(0); log_info(umclog, "Inicio UMC."); pthread_t hiloComandos; pthread_attr_t attrhiloComandos; memoriaReal = reservarMemoria(marcos, marco_Size); //Fabrico mi memoria real iniciarEstructurasUMC(); socketSwap=socketCreateClient(); socketConnect(socketSwap,ip_Swap,atoi(puerto_Swap)); menuUMC(hiloComandos, attrhiloComandos); manageSocketConnections(); liberarMemoria(memoriaReal); //Una vez terminado, libero toda mi memoria real log_destroy(logger); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int errorArgumentos = 0; int errorLogger = 0; int errorConfig = 0; int errorConexion = 0; int errorEnvio = 0; int statusRecepcion = 0; //Variables para el script FILE *script = NULL; //Variables para el logger t_log *logger = NULL; //Variables para el socket int unSocket = -1; struct sockaddr_in socketInfo; //Variables para la carga de la configuración t_config *config = NULL; errorArgumentos = checkArgs(argc); errorLogger = crearLogger(&logger); errorConfig = cargarConfig(&config); if(errorArgumentos || errorLogger || errorConfig) { goto liberarRecursos; return EXIT_FAILURE; } int puerto = config_get_int_value(config, "Puerto"); char *ip_kernel = config_get_string_value(config, "IP"); if ((script = fopen(argv[1],"r")) != NULL) { //Pudimos abrir el archivo correctamente //Entonces creamos la conexión log_info(logger, "Conectando a %s:%d ...", ip_kernel, puerto); errorConexion = crear_conexion_saliente(&unSocket, &socketInfo, ip_kernel, puerto, logger, "PROGRAMA"); if (errorConexion) { log_error(logger, "Error al conectar con el Kernel."); goto liberarRecursos; return EXIT_FAILURE; } log_info(logger, "Conexión establecida."); log_info(logger, "Comenzando a enviar el script AnSISOP."); errorEnvio = enviarDatos(script, unSocket, logger); if (errorEnvio) { goto liberarRecursos; return EXIT_FAILURE; } else { finalizarEnvio(&unSocket); log_info(logger, "Transmisión finalizada."); } //acá se abre la guarda para el modo debug t_paquete_programa paq; while(1){ statusRecepcion = recvAll(&paq, unSocket); if(statusRecepcion == 0){ log_error(logger, "Hubo un error al recibir un mensaje del Kernel."); } else { if(ejecutarMensajeKernel(paq.mensaje)){ //Si es 0 era porque era un imprimir/imprimirTexto. Si es 1, hay que terminar. log_info(logger, "Finalizó la ejecución del programa."); free(paq.mensaje); goto liberarRecursos; break; } } } //acá se cierra la guarda para el modo debug } else { log_error(logger,"No se pudo abrir el script AnSISOP. Motivo: %s", strerror(errno)); goto liberarRecursos; return EXIT_FAILURE; } goto liberarRecursos; return EXIT_SUCCESS; liberarRecursos: if(unSocket != -1) close(unSocket); if(script) fclose(script); if(logger) log_destroy(logger); if(config) config_destroy(config); }