From 79837dd95a90891943659194c43f732a364ad9ff Mon Sep 17 00:00:00 2001 From: ShazaAli Date: Tue, 3 Dec 2024 07:29:45 -0500 Subject: Replica 1 implement all functions --- src/main/java/derms/replica1/Replica1.java | 47 +++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 7 deletions(-) (limited to 'src/main/java/derms/replica1/Replica1.java') diff --git a/src/main/java/derms/replica1/Replica1.java b/src/main/java/derms/replica1/Replica1.java index 10c0ce5..ef45e80 100644 --- a/src/main/java/derms/replica1/Replica1.java +++ b/src/main/java/derms/replica1/Replica1.java @@ -21,6 +21,9 @@ public class Replica1 implements Replica { private final Logger log; private final InetAddress localAddr; private final ResponderClient responderClient; + private final CoordinatorClient coordinatorClient; + private final String responderClientID = "MTL"; + private final String coordinatorClientID = "MTLC1111"; private final ReplicaManager replicaManager; public Replica1(ReplicaManager replicaManager) { @@ -31,7 +34,8 @@ public class Replica1 implements Replica { } catch (UnknownHostException e) { throw new RuntimeException(e); } - responderClient = new ResponderClient("MTL"); + responderClient = new ResponderClient(responderClientID); + coordinatorClient = new CoordinatorClient(coordinatorClientID); try { this.log = DermsLogger.getLogger(getClass()); } catch (IOException e) { @@ -54,12 +58,41 @@ public class Replica1 implements Replica { @Override public void processRequest(Request request) { - String status = responderClient.addResource( - request.getResourceID(), - request.getResourceType(), - request.getDuration() - ); - Response response = new Response(request.getSequenceNumber(), status); + log.info(request.toString()); + + String status = ""; + try { + switch (request.getFunction()) { + case "addResource": + status = responderClient.addResource(request.getResourceID(), request.getResourceType(), request.getDuration()); + break; + case "removeResource": + status = responderClient.removeResource(request.getResourceID(), request.getDuration()); + break; + case "listResourceAvailability": + status = String.join(",", responderClient.listResourceAvailability(request.getResourceType())); + break; + case "requestResource": + status = coordinatorClient.requestResource(coordinatorClientID, request.getResourceID(), request.getDuration()); + break; + case "findResource": + status = String.join(",", coordinatorClient.findResource(coordinatorClientID, request.getResourceType())); + break; + case "returnResource": + status = coordinatorClient.returnResource(coordinatorClientID, request.getResourceID()); + break; + case "swapResource": + status = coordinatorClient.swapResource(coordinatorClientID, request.getOldResourceID(), request.getOldResourceType(), request.getResourceID(), request.getResourceType()); + break; + default: + status = "Failure: unknown function '" + request.getFunction() + "'"; + } + } catch (Exception e) { + log.warning(e.getMessage()); + status = "Failure: " + request.getFunction() + ": " + e.getMessage(); + } + + Response response = new Response(request, replicaManager.getReplicaId(), status, false); // TODO: isSuccess flag log.info("Processed request " + request + "; response: " + response); replicaManager.sendResponseToFE(response); } -- cgit v1.2.3 From 55be062da68cd74214e24801adfe86244d608c3e Mon Sep 17 00:00:00 2001 From: ShazaAli Date: Tue, 3 Dec 2024 09:39:18 -0500 Subject: Replica 1 Failing SHE MTL QUE Comm --- src/main/java/derms/replica1/Replica1.java | 36 ++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/main/java/derms/replica1/Replica1.java') diff --git a/src/main/java/derms/replica1/Replica1.java b/src/main/java/derms/replica1/Replica1.java index ef45e80..a59ed4c 100644 --- a/src/main/java/derms/replica1/Replica1.java +++ b/src/main/java/derms/replica1/Replica1.java @@ -25,6 +25,7 @@ public class Replica1 implements Replica { private final String responderClientID = "MTL"; private final String coordinatorClientID = "MTLC1111"; private final ReplicaManager replicaManager; + private DERMSServer server; public Replica1(ReplicaManager replicaManager) { this.replicaManager = replicaManager; @@ -50,7 +51,21 @@ public class Replica1 implements Replica { @Override public void startProcess() { - pool.execute(DERMSServer::new); + try { + server = new DERMSServer("MTL"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + new DERMSServer("SHE"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + new DERMSServer("QUE"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } alive = true; log.info(getClass().getSimpleName() + " started."); log.config("Local address is "+localAddr.toString()); @@ -61,28 +76,30 @@ public class Replica1 implements Replica { log.info(request.toString()); String status = ""; + boolean isSuccess = true; try { switch (request.getFunction()) { case "addResource": - status = responderClient.addResource(request.getResourceID(), request.getResourceType(), request.getDuration()); + status = server.addResource(request.getResourceID(), request.getResourceType(), request.getDuration()); break; case "removeResource": - status = responderClient.removeResource(request.getResourceID(), request.getDuration()); + status = server.removeResource(request.getResourceID(), request.getDuration()); break; case "listResourceAvailability": - status = String.join(",", responderClient.listResourceAvailability(request.getResourceType())); +// status = String.join(",", responderClient.listResourceAvailability(request.getResourceType())); + status = String.join(",", server.listResourceAvailability(request.getResourceType())); break; case "requestResource": - status = coordinatorClient.requestResource(coordinatorClientID, request.getResourceID(), request.getDuration()); + status = server.requestResource(coordinatorClientID, request.getResourceID(), request.getDuration()); break; case "findResource": - status = String.join(",", coordinatorClient.findResource(coordinatorClientID, request.getResourceType())); + status = String.join(",", server.findResource(coordinatorClientID, request.getResourceType())); break; case "returnResource": - status = coordinatorClient.returnResource(coordinatorClientID, request.getResourceID()); + status = server.returnResource(coordinatorClientID, request.getResourceID()); break; case "swapResource": - status = coordinatorClient.swapResource(coordinatorClientID, request.getOldResourceID(), request.getOldResourceType(), request.getResourceID(), request.getResourceType()); + status = server.swapResource(coordinatorClientID, request.getOldResourceID(), request.getOldResourceType(), request.getResourceID(), request.getResourceType()); break; default: status = "Failure: unknown function '" + request.getFunction() + "'"; @@ -90,9 +107,10 @@ public class Replica1 implements Replica { } catch (Exception e) { log.warning(e.getMessage()); status = "Failure: " + request.getFunction() + ": " + e.getMessage(); + isSuccess = false; } - Response response = new Response(request, replicaManager.getReplicaId(), status, false); // TODO: isSuccess flag + Response response = new Response(request, replicaManager.getReplicaId(), status, isSuccess); // TODO: isSuccess flag log.info("Processed request " + request + "; response: " + response); replicaManager.sendResponseToFE(response); } -- cgit v1.2.3