summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/Replica1.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-28 10:37:30 -0500
committerGitHub <noreply@github.com>2024-11-28 10:37:30 -0500
commit0cae203edc71b0285d2971f9124f24cb543b8e39 (patch)
treea16d0137d60d813c6ff06f2029ad8a935d2a804e /src/main/java/derms/Replica1.java
parentb7dabf61e2f4deea23c9a4cbf33da419d031c5e8 (diff)
parentfe384df239711ad0990e39d585e64292816bf24f (diff)
downloadsoen423-0cae203edc71b0285d2971f9124f24cb543b8e39.zip
Merge pull request #1 from sam-rba/ReplicaManager
merge replicas
Diffstat (limited to 'src/main/java/derms/Replica1.java')
-rw-r--r--src/main/java/derms/Replica1.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/main/java/derms/Replica1.java b/src/main/java/derms/Replica1.java
new file mode 100644
index 0000000..d7c149d
--- /dev/null
+++ b/src/main/java/derms/Replica1.java
@@ -0,0 +1,90 @@
+package derms;
+
+import derms.net.runicast.ReliableUnicastSender;
+
+import javax.xml.ws.Endpoint;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.util.logging.Logger;
+
+public class Replica1 {
+ private final ReliableUnicastSender<Response> unicastSender;
+ ReplicaManager replicaManager;
+ private final Logger log;
+ private boolean alive = true;
+
+ public Replica1( InetSocketAddress frontEndAddress) throws IOException {
+ this.unicastSender = new ReliableUnicastSender<Response>(frontEndAddress);
+ this.log = Logger.getLogger(getClass().getName());
+ }
+
+
+ public boolean isAlive() {
+ return alive;
+ }
+
+ public void startProcess() {
+ // Simulate the replica process starting.
+ log.info("Replica " + 1 + " started.");
+ }
+
+ public void processRequest(Request request) {
+ // Process the request and create a response.
+ endpoint1 = Endpoint.publish("http://localhost:8080/ws/derms", new DERMSServer("MTL"));
+ endpoint2 = Endpoint.publish("http://localhost:8081/ws/derms", new DERMSServer("QUE"));
+ endpoint3 = Endpoint.publish("http://localhost:8082/ws/derms", new DERMSServer("SHE"));
+
+
+ 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.getClientID(), request.getResourceID(), request.getDuration());
+ break;
+ case "findResource":
+ coordinatorClient = new CoordinatorClient(request.getClientID());
+ responseMessage = coordinatorClient.findResource(request.getClientID(), request.getResourceType());
+ break;
+ case "returnResource":
+ coordinatorClient = new CoordinatorClient(request.getClientID());
+ responseMessage = coordinatorClient.returnResource(request.getClientID(), 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 " + 1 + " processed request: " + request + ", response: " + response);
+ replicaManager.sendResponseToFE(response);
+ }
+
+ public void restart() {
+ // Restart the replica process.
+ log.warning("Replica " + 1 + " is restarting...");
+ startProcess();
+ }
+} \ No newline at end of file