summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-12-02 12:58:18 -0500
committerSam Anthony <sam@samanthony.xyz>2024-12-02 12:58:18 -0500
commit141212aeaa705052499229e26437a08a9096c46a (patch)
treeb1486e8512c596f64e2e6c0415af54edd6ca96e6
parentd5e43729aa80e6b4156718b453e2e71620917fff (diff)
downloadsoen423-141212aeaa705052499229e26437a08a9096c46a.zip
pass FE ip address as cmdline arg
-rw-r--r--src/main/java/derms/Config.java3
-rw-r--r--src/main/java/derms/ReplicaManager.java16
-rw-r--r--src/main/java/derms/frontend/FE.java26
3 files changed, 29 insertions, 16 deletions
diff --git a/src/main/java/derms/Config.java b/src/main/java/derms/Config.java
index 430d9de..f8954ef 100644
--- a/src/main/java/derms/Config.java
+++ b/src/main/java/derms/Config.java
@@ -3,6 +3,9 @@ package derms;
import java.net.InetSocketAddress;
public class Config {
+ // The port where the FE publishes the web service endpoint.
+ public static final int frontendEndpointPort = 8067;
+
// The port where the sequencer listens for requests from the FE.
public static final int sequencerInPort = 62310;
diff --git a/src/main/java/derms/ReplicaManager.java b/src/main/java/derms/ReplicaManager.java
index 1f95fac..414cdf0 100644
--- a/src/main/java/derms/ReplicaManager.java
+++ b/src/main/java/derms/ReplicaManager.java
@@ -21,6 +21,7 @@ import java.io.ObjectInputStream;
import java.util.logging.Logger;
public class ReplicaManager {
+ public static final String usage = "Usage: java ReplicaManager <replicaId> <frontEndIP>";
private final int replicaId;
private Replica replica;
private Response response;
@@ -29,18 +30,18 @@ public class ReplicaManager {
private ReliableUnicastSender<Response> unicastSender;
private TotalOrderMulticastReceiver multicastReceiver;
- public ReplicaManager(int replicaId) throws IOException {
+ public ReplicaManager(int replicaId, InetAddress frontEndIP) throws IOException {
this.replicaId = replicaId;
this.log = Logger.getLogger(getClass().getName());
- initUnicastSender();
+ initUnicastSender(frontEndIP);
initReplica();
initMulticastReceiver();
startHeartbeatThread();
}
- private void initUnicastSender() throws IOException {
+ private void initUnicastSender(InetAddress frontEndIP) throws IOException {
int frontEndPort = Config.frontendResponsePorts[replicaId - 1];
- frontEndAddress = new InetSocketAddress("localhost", frontEndPort);
+ frontEndAddress = new InetSocketAddress(frontEndIP, frontEndPort);
unicastSender = new ReliableUnicastSender<>(frontEndAddress);
}
@@ -134,15 +135,16 @@ public class ReplicaManager {
}
public static void main(String[] args) {
- if (args.length != 1) {
- System.err.println("Usage: java ReplicaManager <replicaId>");
+ if (args.length < 2) {
+ System.err.println(usage);
System.exit(1);
}
int replicaId = Integer.parseInt(args[0]);
try {
- ReplicaManager replicaManager = new ReplicaManager(replicaId);
+ InetAddress frontEndIP = InetAddress.getByName(args[1]);
+ ReplicaManager replicaManager = new ReplicaManager(replicaId, frontEndIP);
System.out.println("ReplicaManager " + replicaId + " is running.");
} catch (IOException e) {
System.err.println("Failed to start ReplicaManager: " + e.getMessage());
diff --git a/src/main/java/derms/frontend/FE.java b/src/main/java/derms/frontend/FE.java
index ccba647..2665116 100644
--- a/src/main/java/derms/frontend/FE.java
+++ b/src/main/java/derms/frontend/FE.java
@@ -18,19 +18,22 @@ import java.util.concurrent.atomic.AtomicInteger;
//import constants.Constants;
public class FE {
- private static String sequencerIP = "localhost";
+ public static final String usage = "Usage: java FE <FE IP> <Sequencer IP>";
+ private static String frontendIP;
+ private static String sequencerIP;
private static ReliableUnicastSender<Request> sequencerSock;
private static final String RM_Multicast_group_address = Config.group.toString();
private static final int RM_Multicast_Port = 1234;
- public static String FE_Address = "http://localhost:8067/"+DERMSInterface.class.getSimpleName();
- private static final String FE_IP_Address = "localhost";
-
private static AtomicInteger sequenceIDGenerator = new AtomicInteger(0);
-// public static String FE_IP_Address = "localhost";
public static void main(String[] args) {
try {
- sequencerIP = args[0];
+ if (args.length < 2) {
+ System.out.println(usage);
+ return;
+ }
+ frontendIP = args[0];
+ sequencerIP = args[1];
System.out.println("Connecting to sequencer ("
+ sequencerIP + ":" + Config.sequencerInPort + ")...");
sequencerSock = new ReliableUnicastSender<Request>(
@@ -69,7 +72,7 @@ public class FE {
}
};
DERMSServerImpl servant = new DERMSServerImpl(inter);
- Endpoint endpoint = Endpoint.publish(FE_Address, servant);
+ Endpoint endpoint = Endpoint.publish(endpointURL(frontendIP), servant);
Runnable task = () -> {
listenForUDPResponses(servant);
try {
@@ -90,6 +93,11 @@ public class FE {
// Logger.serverLog(serverID, " Server Shutting down");
}
+ // The URL where the web service endpoint is published.
+ public static String endpointURL(String frontendHost) {
+ return "http://" + frontendHost + ":" + Config.frontendEndpointPort + "/" + DERMSInterface.class.getSimpleName();
+ }
+
private static int sendUnicastToSequencer(Request requestFromClient) {
int sequenceID = sequenceIDGenerator.incrementAndGet();
try {
@@ -169,8 +177,8 @@ public class FE {
// Initialize a receiver for each RM.
for (int port : Config.frontendResponsePorts) {
receivers.add(new ReliableUnicastReceiver<Response>(
- new InetSocketAddress(FE_IP_Address, port)));
- System.out.println("FE listening for responses on " + FE_IP_Address + ":" + port + "...");
+ new InetSocketAddress(frontendIP, port)));
+ System.out.println("FE listening for responses on " + frontendIP + ":" + port + "...");
}
while (true) {