diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-12-02 12:58:18 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-12-02 12:58:18 -0500 |
| commit | 141212aeaa705052499229e26437a08a9096c46a (patch) | |
| tree | b1486e8512c596f64e2e6c0415af54edd6ca96e6 /src | |
| parent | d5e43729aa80e6b4156718b453e2e71620917fff (diff) | |
| download | soen423-141212aeaa705052499229e26437a08a9096c46a.zip | |
pass FE ip address as cmdline arg
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/derms/Config.java | 3 | ||||
| -rw-r--r-- | src/main/java/derms/ReplicaManager.java | 16 | ||||
| -rw-r--r-- | src/main/java/derms/frontend/FE.java | 26 |
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) { |