diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-12-01 13:08:59 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-12-01 13:08:59 -0500 |
| commit | 773c4b8a696dd49b3f0452783e1634350a82226a (patch) | |
| tree | ef12f77af9c8f6fd1ba80cd58bb2e811bbc2e978 /src/main/java/derms/Sequencer.java | |
| parent | fc28d5d3607ac5056272e61b272a823c25dc9bc1 (diff) | |
| download | soen423-773c4b8a696dd49b3f0452783e1634350a82226a.zip | |
pass network interface name to sequencer explicitely
Diffstat (limited to 'src/main/java/derms/Sequencer.java')
| -rw-r--r-- | src/main/java/derms/Sequencer.java | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main/java/derms/Sequencer.java b/src/main/java/derms/Sequencer.java index 530e0c1..88b15a1 100644 --- a/src/main/java/derms/Sequencer.java +++ b/src/main/java/derms/Sequencer.java @@ -6,6 +6,7 @@ import derms.net.tomulticast.TotalOrderMulticastSender; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.NetworkInterface; import java.util.logging.Logger; /** @@ -13,7 +14,7 @@ import java.util.logging.Logger; * sends them to the RMs via {@link derms.net.tomulticast.TotalOrderMulticastSender}. */ public class Sequencer implements Runnable { - public static final String usage = "Usage: java Sequencer <laddr>"; + public static final String usage = "Usage: java Sequencer <ip address> <network interface>"; private final ReliableUnicastReceiver<Request> in; // From FE. private final TotalOrderMulticastSender<Request> out; // To RMs. @@ -22,10 +23,11 @@ public class Sequencer implements Runnable { /** * * @param laddr The local IP address. + * @param ifs The network interface to use. */ - public Sequencer(InetAddress laddr) throws IOException { + public Sequencer(InetAddress laddr, NetworkInterface ifs) throws IOException { this.in = new ReliableUnicastReceiver<Request>(new InetSocketAddress(laddr, Config.sequencerInPort)); - this.out = new TotalOrderMulticastSender<Request>(Config.group, laddr); + this.out = new TotalOrderMulticastSender<Request>(Config.group, laddr, ifs); this.log = Logger.getLogger(getClass().getName()); } @@ -41,7 +43,7 @@ public class Sequencer implements Runnable { Sequencer seq = null; try { - seq = new Sequencer(args.laddr); + seq = new Sequencer(args.laddr, args.ifs); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); @@ -82,15 +84,25 @@ public class Sequencer implements Runnable { private static class Args { private final InetAddress laddr; + private final NetworkInterface ifs; private Args(String[] args) throws IllegalArgumentException { if (args.length < 1) { - throw new IllegalArgumentException("Missing argument 'laddr'"); + throw new IllegalArgumentException("Missing argument 'ip address'"); } try { this.laddr = InetAddress.getByName(args[0]); } catch (Exception e) { - throw new IllegalArgumentException("Bad value of 'laddr': " + e.getMessage()); + throw new IllegalArgumentException("Bad value of 'ip address': " + e.getMessage()); + } + + if (args.length < 2) { + throw new IllegalArgumentException("Missing argument 'network interface'"); + } + try { + this.ifs = NetworkInterface.getByName(args[1]); + } catch (Exception e ) { + throw new IllegalArgumentException("Bad value of 'network interface': " + e.getMessage()); } } } |