From ba096107f89ae49dc51efa12babb11042bdc3a93 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 19 Mar 2022 17:41:35 +0100 Subject: [PATCH] =?UTF-8?q?-=20Ajout=20gestion=20d'erreur=20si=20le=20SBE?= =?UTF-8?q?=20se=20d=C3=A9connecte=20lors=20d'une=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/lightcontainer/domains/FFETimer.java | 3 -- .../domains/client/StoreProcessor.java | 4 +-- .../interfaces/StoreProcessorFFE.java | 4 +-- .../repository/FileFrontEnd.java | 28 +++++++++---------- app/src/main/resources/appdata.json | 25 +---------------- 5 files changed, 19 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/lightcontainer/domains/FFETimer.java b/app/src/main/java/lightcontainer/domains/FFETimer.java index 3a6193f..3124343 100644 --- a/app/src/main/java/lightcontainer/domains/FFETimer.java +++ b/app/src/main/java/lightcontainer/domains/FFETimer.java @@ -19,14 +19,11 @@ public class FFETimer extends TimerTask { @Override public void run() { - System.out.println("Timer 1"); for (String domain : processorRepository.getDomains()) { LocalDateTime lastAnnounce = processorRepository.getLastAnnounce(domain); long secondBetween = Math.abs(ChronoUnit.SECONDS.between(lastAnnounce, LocalDateTime.now())); - System.out.println("Timer 2 : " + secondBetween); if (secondBetween > 50) { - System.out.println("Timer 3"); processorRepository.closeStore(domain); } } diff --git a/app/src/main/java/lightcontainer/domains/client/StoreProcessor.java b/app/src/main/java/lightcontainer/domains/client/StoreProcessor.java index 9c938dc..42c1590 100644 --- a/app/src/main/java/lightcontainer/domains/client/StoreProcessor.java +++ b/app/src/main/java/lightcontainer/domains/client/StoreProcessor.java @@ -163,7 +163,7 @@ public class StoreProcessor extends Thread implements AutoCloseable { if (responseCommand == null) { this.close(); } - fileFrontEnd.onStoreAvailable(this, responseCommand); + fileFrontEnd.onStoreAvailable(this.getDomain(), responseCommand); } } @@ -190,7 +190,7 @@ public class StoreProcessor extends Thread implements AutoCloseable { public void close() { if (this.client_run) { this.client_run = false; - System.out.println("[FERMETURE SBE] " + domain); + System.out.println("[SBE] Fermeture de " + domain); // TODO : Gérer déconnection (enlever du repo et prévenir client et FileFrontEnd) } } diff --git a/app/src/main/java/lightcontainer/interfaces/StoreProcessorFFE.java b/app/src/main/java/lightcontainer/interfaces/StoreProcessorFFE.java index 8848242..5158551 100644 --- a/app/src/main/java/lightcontainer/interfaces/StoreProcessorFFE.java +++ b/app/src/main/java/lightcontainer/interfaces/StoreProcessorFFE.java @@ -11,10 +11,10 @@ public interface StoreProcessorFFE { /** * Allows a {@link StoreProcessor} to notify the FFE that it's available. * - * @param store The store processor that is now available. + * @param storeDomain The store processor that is now available. * @param response */ - void onStoreAvailable(StoreProcessor store, ProtocolWriter.ProtocolResult response); + void onStoreAvailable(String storeDomain, ProtocolWriter.ProtocolResult response); /** * Permet de déconnecter un SBE diff --git a/app/src/main/java/lightcontainer/repository/FileFrontEnd.java b/app/src/main/java/lightcontainer/repository/FileFrontEnd.java index 66a4f94..a35e4f6 100644 --- a/app/src/main/java/lightcontainer/repository/FileFrontEnd.java +++ b/app/src/main/java/lightcontainer/repository/FileFrontEnd.java @@ -3,7 +3,6 @@ package lightcontainer.repository; import lightcontainer.domains.client.Context; import lightcontainer.domains.client.StoreProcessor; import lightcontainer.domains.Task; -import lightcontainer.enumerations.TaskStatus; import lightcontainer.interfaces.ClientHandlerFFE; import lightcontainer.interfaces.ProtocolRepository; import lightcontainer.interfaces.StoreProcessorFFE; @@ -42,37 +41,38 @@ public class FileFrontEnd implements ClientHandlerFFE, StoreProcessorFFE { /** * Permet à un {@link StoreProcessor} d'avertir le FFE qu'il est disponible * - * @param store Le SBE qui s'est occupé de la tâche + * @param storeDomain Le SBE qui s'est occupé de la tâche * @param response La réponse à envoyer au client */ @Override - public void onStoreAvailable(StoreProcessor store, ProtocolWriter.ProtocolResult response) { + public void onStoreAvailable(String storeDomain, ProtocolWriter.ProtocolResult response) { + responseToClient(storeDomain, response); + Iterator it = tasks.iterator(); while (it.hasNext()) { Task task = it.next(); - if (task.isResponseOfClient(store.getDomain())) { - clientRepository.respondToClient(task.getClient(), response); - it.remove(); // Suppression de la tâche - break; + if (task.getDomain() == null) { + task.setDomain(storeDomain); + storeRepository.assignTask(storeDomain, task); + return; } } - - assignOtherTask(store); } @Override public void onStoreDisconnect(String domain) { + responseToClient(domain, null); this.storeRepository.closeStore(domain); } - private void assignOtherTask(StoreProcessor store) { + private void responseToClient(String storeDomain, ProtocolWriter.ProtocolResult response) { Iterator it = tasks.iterator(); while (it.hasNext()) { Task task = it.next(); - if (task.getDomain() == null && store.canProcessTask()) { - task.setDomain(store.getDomain()); - store.executeCommand(task.getContext(), task.getCommand()); - return; + if (task.isResponseOfClient(storeDomain)) { + clientRepository.respondToClient(task.getClient(), response); + it.remove(); // Suppression de la tâche + break; } } } diff --git a/app/src/main/resources/appdata.json b/app/src/main/resources/appdata.json index 7d33a47..d2ba8b2 100644 --- a/app/src/main/resources/appdata.json +++ b/app/src/main/resources/appdata.json @@ -1,24 +1 @@ -{ - "unicast_port": 8000, - "multicast_ip": "224.66.66.1", - "multicast_port": 15502, - "network_interface": "wlp1s0", - "tls": true, - "storagePath": "/home/benjamin/ffe", - "users": [ - { - "name": "benjamin", - "password": "$2a$10$I4vHt83CTYuQCP7xvZ04Ne7Vb0cswBiVZhV0n23k9FCxoH0ny9fZG", - "aes_key": "mAP6izUBUhBxIkakH2yB/TplhRz1OQV5Fp6HQmhywns=", - "files": [ - ] - }, - { - "name": "aaaaa", - "password": "$2a$10$nDCEDVwbNO/YDQ4qdRcxfuES4.aboluLzWouXXsk6vDoaWocv516W", - "aes_key": "kYtwHy9qJBg30WS6axWTFGVE0Ge5kpYiJJlC+COIEI4=", - "files": [ - ] - } - ] -} \ No newline at end of file +{"unicast_port":8000,"multicast_ip":"224.66.66.1","multicast_port":15502,"network_interface":"wlp1s0","tls":true,"storagePath":"/home/benjamin/ffe","users":[{"name":"benjamin","password":"$2a$10$I4vHt83CTYuQCP7xvZ04Ne7Vb0cswBiVZhV0n23k9FCxoH0ny9fZG","aes_key":"mAP6izUBUhBxIkakH2yB/TplhRz1OQV5Fp6HQmhywns=","files":[]},{"name":"aaaaa","password":"$2a$10$nDCEDVwbNO/YDQ4qdRcxfuES4.aboluLzWouXXsk6vDoaWocv516W","aes_key":"kYtwHy9qJBg30WS6axWTFGVE0Ge5kpYiJJlC+COIEI4=","files":[{"name":"README.md","fileNameSalt":"4m84wYD79s9FoFq7Tqjzow==","size":17,"iv":"8EaBv4WGO++knjUbLXSFUA==","storage":["lightcontainerSB01"]}]}]} \ No newline at end of file