package es.um.redes.nanoFiles.application; import es.um.redes.nanoFiles.logic.NFController; import es.um.redes.nanoFiles.util.FileDatabase; import es.um.redes.nanoFiles.util.NickGenerator; public class NanoFiles { public static final String DEFAULT_SHARED_DIRNAME = "nf-shared"; /** * Identificador único para cada grupo de prácticas. TODO: Establecer a un valor * que combine los DNIs de ambos miembros del grupo de prácticas. */ public static final String PROTOCOL_ID = "123456789A"; private static final String DEFAULT_DIRECTORY_HOSTNAME = "192.168.1.46"; public static String sharedDirname = DEFAULT_SHARED_DIRNAME; public static FileDatabase db; /** * Flag para pruebas iniciales con UDP, desactivado una vez que la comunicación * cliente-directorio está implementada y probada. */ public static boolean testModeUDP = false; /** * Flag para pruebas iniciales con TCP, desactivado una vez que la comunicación * cliente-servidor de ficheros está implementada y probada. */ public static boolean testModeTCP = false; public static String peerNickname; public static void main(String[] args) { // Comprobamos los argumentos if (args.length > 1) { System.out.println("Usage: java -jar NanoFiles.jar []"); return; } else if (args.length == 1) { // Establecemos el directorio compartido especificado sharedDirname = args[0]; } db = new FileDatabase(sharedDirname); peerNickname = NickGenerator.randomNickname(); System.out.println("* Peer nickname: " + peerNickname); // Creamos el controlador que aceptará y procesará los comandos NFController controller = new NFController(DEFAULT_DIRECTORY_HOSTNAME); if (testModeUDP) { controller.testCommunication(); } else { // Entramos en el bucle para pedirle al controlador que procese comandos del // shell hasta que el usuario quiera salir de la aplicación. do { controller.readGeneralCommandFromShell(); controller.processCommand(); } while (controller.shouldQuit() == false); System.out.println("Bye."); System.exit(0); } } }