From 6767d5b22d105cdbae568b4734c6835f2828118d Mon Sep 17 00:00:00 2001 From: BMatajsz <90217645+BMatajsz@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:09:12 -0500 Subject: Progress --- src/main/java/derms/Replica3.java | 100 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/main/java/derms/Replica3.java (limited to 'src/main/java/derms/Replica3.java') diff --git a/src/main/java/derms/Replica3.java b/src/main/java/derms/Replica3.java new file mode 100644 index 0000000..b1ee8ce --- /dev/null +++ b/src/main/java/derms/Replica3.java @@ -0,0 +1,100 @@ +package derms; + +import derms.Replica3pkg.CoordinatorClient; +import derms.Replica3pkg.RemoteServer; +import derms.Replica3pkg.ResponderClient; +import derms.Replica3pkg.Server; +import derms.net.runicast.ReliableUnicastSender; +import derms.Replica; +import derms.ReplicaManager; +import derms.Request; +import derms.Response; +import javax.xml.ws.Endpoint; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Logger; + +public class Replica3 implements Replica { + + private ReplicaManager replicaManager; + private RemoteServer remoteServer; + private boolean alive = true; + + public Replica3(ReplicaManager replicaManager){ + this.replicaManager = replicaManager; + this.remoteServer = new RemoteServer(); + } + + @Override + public boolean isAlive() { + return alive; + } + + @Override + public void startProcess() { + + } + + @Override + public void processRequest(Request request) { + ResponderClient responderClient; + CoordinatorClient coordinatorClient; + String responseMessage; + switch (request.getFunction()) { + case "addResource": + responderClient = new ResponderClient(request.getClientID()); + responseMessage = responderClient.addResource(request.getResourceID(), request.getResourceType(), request.getDuration()); + break; + case "removeResource": + responderClient = new ResponderClient(request.getClientID()); + responseMessage = responderClient.removeResource(request.getResourceID(), request.getDuration()); + break; + case "listResourceAvailability": + responderClient = new ResponderClient(request.getClientID()); + responseMessage = responderClient.listResourceAvailability(request.getResourceType()); + break; + case "requestResource": + coordinatorClient = new CoordinatorClient(request.getClientID()); + responseMessage = coordinatorClient.requestResource(request.getResourceID(), request.getDuration()); + break; + case "findResource": + coordinatorClient = new CoordinatorClient(request.getClientID()); + responseMessage = coordinatorClient.findResource(request.getResourceType()); + break; + case "returnResource": + coordinatorClient = new CoordinatorClient(request.getClientID()); + responseMessage = coordinatorClient.returnResource(request.getResourceID()); + break; + case "swapResource": + coordinatorClient = new CoordinatorClient(request.getClientID()); + responseMessage = coordinatorClient.swapResource( + request.getClientID(), + request.getOldResourceID(), + request.getOldResourceType(), + request.getResourceID(), + request.getResourceType() + ); + break; + default: + responseMessage = "Unrecognized function: " + request.getFunction(); + log.severe("Unrecognized function in request: " + request.getFunction()); + break; + } + + Response response = new Response(request.getSequenceNumber(), responseMessage); + log.info("Replica " + 3 + " processed request: " + request + ", response: " + response); + replicaManager.sendResponseToFE(response); + } + + @Override + public void restart() { + + } + + @Override + public int getId() { + return 3; + } +} \ No newline at end of file -- cgit v1.2.3