diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-11-28 10:37:30 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-28 10:37:30 -0500 |
| commit | 0cae203edc71b0285d2971f9124f24cb543b8e39 (patch) | |
| tree | a16d0137d60d813c6ff06f2029ad8a935d2a804e /src/main/java/derms/Replica1.java | |
| parent | b7dabf61e2f4deea23c9a4cbf33da419d031c5e8 (diff) | |
| parent | fe384df239711ad0990e39d585e64292816bf24f (diff) | |
| download | soen423-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.java | 90 |
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 |