1
0
2020-09-21 16:35:42 +02:00

69 lines
2.2 KiB
Java

package cs451;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class Main {
private static void handleSignal() {
//immediately stop network packet processing
System.out.println("Immediately stopping network packet processing.");
//write/flush output file if necessary
System.out.println("Writing output.");
}
private static void initSignalHandlers() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
handleSignal();
}
});
}
public static void main(String[] args) throws InterruptedException {
Parser parser = new Parser(args);
parser.parse();
initSignalHandlers();
// example
long pid = ProcessHandle.current().pid();
System.out.println("My PID is " + pid + ".");
System.out.println("Use 'kill -SIGINT " + pid + " ' or 'kill -SIGTERM " + pid + " ' to stop processing packets.");
System.out.println("My id is " + parser.myId() + ".");
System.out.println("List of hosts is:");
for (Host host: parser.hosts()) {
System.out.println(host.getId() + ", " + host.getIp() + ", " + host.getPort());
}
System.out.println("Barrier: " + parser.barrierIp() + ":" + parser.barrierPort());
System.out.println("Signal: " + parser.signalIp() + ":" + parser.signalPort());
System.out.println("Output: " + parser.output());
// if config is defined; always check before parser.config()
if (parser.hasConfig()) {
System.out.println("Config: " + parser.config());
}
Coordinator coordinator = new Coordinator(parser.myId(), parser.barrierIp(), parser.barrierPort(), parser.signalIp(), parser.signalPort());
System.out.println("Waiting for all processes for finish initialization");
coordinator.waitOnBarrier();
System.out.println("Broadcasting messages...");
System.out.println("Signaling end of broadcasting messages");
coordinator.finishedBroadcasting();
while (true) {
// Sleep for 1 hour
Thread.sleep(60 * 60 * 1000);
}
}
}