From eedfcab3ad6c11db7c705029c4c9691d7e9bbe77 Mon Sep 17 00:00:00 2001 From: Mongolila-098 Date: Wed, 29 Apr 2026 18:31:10 +0200 Subject: [PATCH] ESTADO SERVING --- .../nanoFiles/application/NanoFiles.class | Bin 2224 -> 2221 bytes .../redes/nanoFiles/logic/NFController.class | Bin 6955 -> 7190 bytes es/um/redes/nanoFiles/logic/NFController.java | 144 ++++++++++-------- .../nanoFiles/tcp/client/NFConnector.class | Bin 5564 -> 6147 bytes .../redes/nanoFiles/tcp/server/NFServer.class | Bin 7320 -> 8197 bytes .../DirectoryConnector$DownloadedFile.class | Bin 776 -> 776 bytes .../udp/client/DirectoryConnector.class | Bin 9634 -> 10311 bytes 7 files changed, 84 insertions(+), 60 deletions(-) diff --git a/es/um/redes/nanoFiles/application/NanoFiles.class b/es/um/redes/nanoFiles/application/NanoFiles.class index 06d51b7917b585ee378c0f58e9f3fe721714daf4..31a20a41be7bfdf5722cbb78d7a12f06235a6fa8 100644 GIT binary patch delta 21 dcmdlWxK?n&Juc3i{N%)(jQrw~jjxZg0{~w_2{Hfx delta 24 gcmZ20xIu8jJzgF|OCvo)GYdUKJrlEyFOISU0AJ1r%m4rY diff --git a/es/um/redes/nanoFiles/logic/NFController.class b/es/um/redes/nanoFiles/logic/NFController.class index 3c43b0c16feb9d8079793e02e904b08a176eb64c..3ee6a784442d2f91314ad739c24b8b6497111c29 100644 GIT binary patch delta 3782 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 diff --git a/es/um/redes/nanoFiles/logic/NFController.java b/es/um/redes/nanoFiles/logic/NFController.java index fe91dd9..00690fa 100644 --- a/es/um/redes/nanoFiles/logic/NFController.java +++ b/es/um/redes/nanoFiles/logic/NFController.java @@ -18,6 +18,7 @@ public class NFController { private static final byte END = 4; private static final byte WAIT_ACK_REQUESTDIRFILES = 5; private static final byte RETRY_REQUESTDIRFILES = 6; + private static final byte SERVING = 7; /* * DONE: (Boletín Autómatas) Añadir más constantes que representen los estados @@ -163,9 +164,9 @@ public class NFController { //Comprobamos si ya estamos sirviendo if (controllerPeer.getServerPort() != 0) { - System.err.println("* Ya existe un servidor de ficheros activo en el puerto " + controllerPeer.getServerPort()); - break; - } + System.err.println("* Ya existe un servidor de ficheros activo en el puerto " + controllerPeer.getServerPort()); + break; + } if (NanoFiles.testModeTCP) { controllerPeer.testTCPServer(); } else { @@ -220,6 +221,7 @@ public class NFController { * Método que comprueba si se puede procesar un comando introducidos por un * usuario, en función del estado del autómata en el que nos encontramos. */ + private boolean canProcessCommandInCurrentState() { /* * TODO: (Boletín Autómatas) Para cada comando tecleado en el shell @@ -228,43 +230,61 @@ public class NFController { * serán válidos en cualquier estado. Este método NO debe modificar * clientStatus. */ + boolean commandAllowed = true; - switch (currentCommand) { - //Comandos SIEMPRE permitidos - case NFCommands.COM_MYFILES: - case NFCommands.COM_QUIT: - case NFCommands.COM_HELP: - case NFCommands.COM_NICK: - commandAllowed = true; - break; - //Comandos permitidos:OFFLINE - case NFCommands.COM_PING: - commandAllowed = (currentState == OFFLINE); - if (!commandAllowed) { - System.err.println("* Ya estás conectado al directorio. No necesitas hacer ping de nuevo."); - } - break; - //Comandos permitidos:ONLINE - case NFCommands.COM_FILELIST_DIR: - case NFCommands.COM_PEERLIST: - case NFCommands.COM_SERVE: - case NFCommands.COM_DOWNLOAD_DIR: - case NFCommands.COM_FILELIST_PEER: - case NFCommands.COM_DOWNLOAD_PEER: - commandAllowed = (currentState == ONLINE); - System.out.println("allowed = " + commandAllowed); - if (!commandAllowed) { - System.err.println("* Comando no permitido en estado OFFLINE. Haz un 'ping' primero."); - } - break; - - default: - commandAllowed = false; - System.err.println("ERROR: undefined behaviour for " + currentCommand + " command!"); - } - return commandAllowed; + switch (currentCommand) { + // Comandos SIEMPRE permitidos + case NFCommands.COM_MYFILES: + case NFCommands.COM_QUIT: + case NFCommands.COM_HELP: + commandAllowed = true; + break; + + // Comandos permitidos: solo en OFFLINE + case NFCommands.COM_PING: + commandAllowed = (currentState == OFFLINE); + if (!commandAllowed) { + System.err.println("* Ya estás conectado al directorio. No necesitas hacer ping de nuevo."); + } + break; + + // Comandos permitidos: OFFLINE Y ONLINE (no en SERVING) + case NFCommands.COM_NICK: + commandAllowed = (currentState == OFFLINE || currentState == ONLINE); + if (!commandAllowed) { + System.err.println("* No puedes cambiar tu nick mientras estás sirviendo ficheros."); + } + break; + + // Comandos permitidos: solo en ONLINE + case NFCommands.COM_SERVE: + commandAllowed = (currentState == ONLINE); + if (currentState == OFFLINE) { + System.err.println("* Comando no permitido en estado OFFLINE. Haz un 'ping' primero."); + } else if (currentState == SERVING) { + System.err.println("* Ya estás sirviendo ficheros. No puedes iniciar el servidor de nuevo."); + } + break; + + // Comandos permitidos: ONLINE Y SERVING + case NFCommands.COM_FILELIST_DIR: + case NFCommands.COM_PEERLIST: + case NFCommands.COM_DOWNLOAD_DIR: + case NFCommands.COM_FILELIST_PEER: + case NFCommands.COM_DOWNLOAD_PEER: + commandAllowed = (currentState == ONLINE || currentState == SERVING); + if (!commandAllowed) { + System.err.println("* Comando no permitido en estado OFFLINE. Haz un 'ping' primero."); + } + break; + + default: + commandAllowed = false; + System.err.println("ERROR: undefined behaviour for " + currentCommand + " command!"); + } + return commandAllowed; } - + private void updateCurrentState(boolean success) { /* * TODO: (Boletín Autómatas) Si el comando ha sido procesado con éxito, debemos @@ -272,28 +292,32 @@ public class NFController { * siguiente estado y así permitir unos u otros comandos en cada caso. */ if (!success) { - return; //Si falla, no cambiamos de estado - } - - switch (currentCommand) { - case NFCommands.COM_PING: - System.out.println("updateCurrentState ping"); - currentState = ONLINE; - break; - - case NFCommands.COM_QUIT: - currentState = OFFLINE; - break; - - default: - /* - * Los únicos comandos que cambian el estado del autómata son el - * 'ping' para ponerlo en ONLINE, y el 'quit' para ponerlo en - * OFFLINE, por lo tanto, los demás comandos no alterarán el - * estado del autómata - */ - break; - } + return; // Si falla, no cambiamos de estado + } + + switch (currentCommand) { + case NFCommands.COM_PING: + // System.out.println("updateCurrentState ping"); + currentState = ONLINE; + break; + + case NFCommands.COM_SERVE: + currentState = SERVING; + break; + + case NFCommands.COM_QUIT: + currentState = OFFLINE; + break; + + default: + /* + * Los únicos comandos que cambian el estado del autómata son el + * 'ping' para ponerlo en ONLINE, 'quit' para ponerlo en OFFLINE, + * y 'serve', por lo tanto, los demás comandos no alterarán el + * estado del autómata + */ + break; + } } private void showMyLocalFiles() { diff --git a/es/um/redes/nanoFiles/tcp/client/NFConnector.class b/es/um/redes/nanoFiles/tcp/client/NFConnector.class index f8e7cb42344ead7cae23c93af9b2cbfac4703c33..48c1604f934050b05c30ebc520ba10cb9fe3f98c 100644 GIT binary patch delta 1630 zcmZWoX-pht7=FIJW{=q|uv~)_*V-bmlA2hn*@#C?YA>vn+Qe9XZ0!`bz*3j1#ba%? z-aySHwlR%XYeE{)VliveL(nuP5*j>yNL%r!Sd3W3dQ?$apKlfjhS|+~Jn#9<_sogl zrUeGS8i5 zU#j>DO#+?WS@R$mcrsCJ_Q->5i`Z&Uak)lJcwyPE0*Y(*=JH^}gJDlTBuc;6Fn zjNzh!AB|DZ{9As)&&+Ai^%|MFN~VtC7ZsQAtAM>F7HQO}i|$`myupP^{I22;gaxd6 zEat?Y#xnIrF=4c-wZdYIsyiGm;ZcO!*y0V^Re^m)#-KOX829;%6W+$S(<$Z&I2!b5 zV?a1Xx_}zfAJ8Ms`sRR;h+n``M4ctztPM9b2FfIw!@Mm#XGNq{PazuP)jV~|yFzBy zN2^lad;z67T$^&P6ew7)NA*jH#lb~wiZHxmp3tC zoK5eDXP3N#(gY55!W~jIHGwYCeFPgbP9?A{Xg!Hz34GXx{*Y%*p62OZ6J-9Jfangn z=YX2K7cT67?Jzhl>tE%w^BCM_BpeRle|A_towz5whXGAef>^%Ju)UazE`$oxw zdR)eXSk2z;@KH`+4a%vV>@k4T5J<;yyotA9K{4kXre!sP{_9ttMh@1Zn;H9IH!YPl z)7J2eb!o=>oPAa1r+N?3T1Vt*_>7(Yy!c85*$$CJ0aOJ-L63q8{+S^k1^p7tb|kq7 z4Pkmo?rbr$v!|nGz!Yba@W3Nerym7pQfb7_;S0)Kz_OMLx{(j`S(n<5qvAg0UECY8 zYj$4tux8Is;A>;ZABc~Hl+yg&nfN}Ezz?OGlEAoasjU;0nj?WtX^sQ%9l>uImr0~f ztS~|60o*FFzf5e2Y&x4jOF}NqMW7QUA?GXxrBKb;I~$9esaduzu4~11JVaLP!ZUcD z+Dhw1o^l^v!E5xp(1V1DOV-5X;n2ja7JdlZ;l~bWXvG3Nj36Gx4T$4rJci}i$=lz> zyL~Da~##iVeNRG{vo`;k!>8>P6~G5Bn*>Mt-Nl& z)+tI!>r;GY-bWw)<~z5T(SPtSSF^He5`!eVmjsoBvvav}lW-2M=Z_=Fn^f?~6rb!I zmSUTWOH5lwXDrFBO1LL+59uPAl$qqo?UF4*5E@HS=x&mV)HBKAnjMt0rsyI$XV3j# z&}1uwunL<|nzgWIuX$j}Zg7LtH)IuddKTf}G~gzK|R!<3n(%r<4NDf3L3 TZ^{A@V6~f-SBa~|B53~sf^uG` delta 962 zcmXX@Nla5w6g{{7Lx*3c4p;=NVhm7CObnDD$ZlX3Fle#{$GFIKlk19?(p8ZJ+sdSGpsaTxVNYzoe+nj&=B?;WHWuRy`WE;j5_E=F)c| zv@oI1)uE_lSIH*2T|sh)6RyMEij70kTm#L5u1e^w4&_DL@93Nw5^MbrWpi z##lU1Zm?dCYYv6=+R#ot#bon&OJl4h<@t^1*2u<`H<_SrZw#lLJVO2|J)&=EjRji8 zm9!ZY5aVgZ(lq8p!j*q|LHeM@LARj7!SW4=PnrA6WJ(O7A?s2SZ9(ff3@35<0i zf=QgD1S}kQ0LS4&AC8$;LM3x+;S-D9)g^ss!6AhBWD}M%-<&FqDpa#)!(m**br3Rf z5Ca(GdPV3Gs%L&dKNPG$g3oSoq{cQCeVcbR%oIZw`#d@2^cQZB$}EGA%^i#~P6DV6 zGA9AO)>3H%wQJNfSY0OjWxo4eznq)I1F^^(=zdbB&dTle;6*5jm$Uq867Qr^sULIv zN)qcclp{zR!pE#HEI~i=P11G*UW5B)at@;?>*1A7a%U^r(aATlnnEn)rvVZ6+Tg-g zzH1bI#4rup5X26YpuQao(SfDd$*Oeno4e3}U1&l#r|jlpJ=lX@Q@sY*jpzJV&)D6- zO>SxIez3B}Gg&{e{>eXp8x;= diff --git a/es/um/redes/nanoFiles/tcp/server/NFServer.class b/es/um/redes/nanoFiles/tcp/server/NFServer.class index 29582f726551f8039d2067c7a7d94b352bf4f168..c60c79ba1c590469b3139382ddd41a48a3a0da01 100644 GIT binary patch literal 8197 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 delta 33 ocmeBR>tNe3ok`SzfrY`5fs?_BfsetNL4?7DL5jh3@*1WX0BM&6@Bjb+ diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.class b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.class index d49307cd2bd0debf55ff7c5cbe4a4504910fe9a8..25cb1ee288073a1cb144e8a1b967aec938792fee 100644 GIT binary patch delta 3926 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