summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/Replica3.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms/Replica3.java')
-rw-r--r--src/main/java/derms/Replica3.java100
1 files changed, 100 insertions, 0 deletions
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