summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/Replica4.java
diff options
context:
space:
mode:
authorBMatajsz <90217645+BMatajsz@users.noreply.github.com>2024-12-02 17:25:26 -0500
committerBMatajsz <90217645+BMatajsz@users.noreply.github.com>2024-12-02 17:25:26 -0500
commit06b85e583dd9242855b2ca9173a580c766733a25 (patch)
tree3328857a43dae98d2d58157e5a01868f2abb8e7a /src/main/java/derms/Replica4.java
parent6767d5b22d105cdbae568b4734c6835f2828118d (diff)
downloadsoen423-06b85e583dd9242855b2ca9173a580c766733a25.zip
Added Replica4
Diffstat (limited to 'src/main/java/derms/Replica4.java')
-rw-r--r--src/main/java/derms/Replica4.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/main/java/derms/Replica4.java b/src/main/java/derms/Replica4.java
new file mode 100644
index 0000000..760f8bb
--- /dev/null
+++ b/src/main/java/derms/Replica4.java
@@ -0,0 +1,108 @@
+package derms;
+
+//import derms.Replica3pkg.ResponderClient;
+import java.io.*;
+import java.util.*;
+
+import derms.Replica4pkg.RemoteServer;
+
+public class Replica4 implements Replica {
+
+ private ReplicaManager replicaManager;
+ private RemoteServer remoteServer;
+ private boolean alive = true;
+
+ public Replica4(ReplicaManager replicaManager){
+ this.replicaManager = replicaManager;
+ }
+
+ @Override
+ public boolean isAlive() {
+ return alive;
+ }
+
+ @Override
+ public void startProcess() {
+ this.remoteServer = new RemoteServer();
+ System.out.println("[Replica 4] Process started.");
+ }
+
+ @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("Unrecognized function in request: " + request.getFunction());
+ break;
+ }
+
+ Response response = new Response(request.getSequenceNumber(), responseMessage);
+ log("Replica " + 4 + " processed request: " + request + ", response: " + response);
+ replicaManager.sendResponseToFE(response);
+ }
+
+ @Override
+ public void restart() {
+ shutDown();
+ startProcess();
+ }
+
+ public void shutDown(){
+ this.remoteServer.stopServers();
+ }
+
+ @Override
+ public int getId() {
+ return 4;
+ }
+
+ public synchronized void log(String message) {
+ String logMessage = new Date() + " - " + message;
+ System.out.println(logMessage);
+
+ try (FileWriter fw = new FileWriter("Replica4_log.txt", true);
+ BufferedWriter bw = new BufferedWriter(fw);
+ PrintWriter out = new PrintWriter(bw)) {
+ out.println(logMessage);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file