All checks were successful
flavien's git/Projet_JAVA_P2P_STRI2A/pipeline/head This commit looks good
Fix #17
98 lines
3.3 KiB
Java
98 lines
3.3 KiB
Java
package tracker;
|
|
|
|
import java.util.Scanner;
|
|
import tracker.TrackerManagementTCP;
|
|
import tracker.TrackerManagementUDP;
|
|
import tools.Directories;
|
|
import tools.Logger;
|
|
import tools.LogLevel;
|
|
import tools.TrackerPortRange;
|
|
import tools.HostItem;
|
|
|
|
/** Tracker implementation
|
|
* First argument of main method is port listened by the tracker, and is mandatory.
|
|
* @author Louis Royer
|
|
* @author Flavien Haas
|
|
* @author JS Auge
|
|
* @version 1.0
|
|
*/
|
|
public class Tracker {
|
|
private HostItem tracker;
|
|
private Directories directories;
|
|
private Logger logger;
|
|
final static boolean DEBUG = true;
|
|
/** Constructor with portStr containing a port number.
|
|
* @param hostname hostname to bind
|
|
* @param port port to bind
|
|
* @param isInteractive true if application is in interactive mode
|
|
*/
|
|
public Tracker(String hostname, int port, boolean isInteractive) {
|
|
tracker = new HostItem(hostname, port);
|
|
directories = new Directories("P2P_JAVA_PROJECT_TRACKER_" + port);
|
|
logger = new Logger(directories.getDataHomeDirectory() + "tracker.log", DEBUG);
|
|
System.out.println("Tracker will listen on port " + port + " and write logs into " + directories.getDataHomeDirectory());
|
|
Scanner scanner = new Scanner(System.in);
|
|
if (isInteractive) {
|
|
directories.askOpenDataHomeDirectory(null, scanner);
|
|
}
|
|
scanner.close();
|
|
}
|
|
|
|
/** Main program entry point
|
|
* first parameter is port number and is mandatory
|
|
* to test, run with: java serverP2P.ServerP2P
|
|
* @param args parameters
|
|
*/
|
|
public static void main(String [] args) {
|
|
final TrackerPortRange trackerPortRange = new TrackerPortRange();
|
|
final String defaultHostname = "localhost";
|
|
Scanner scanner = new Scanner(System.in);
|
|
String hostname = "";
|
|
int port = 0;
|
|
Tracker t;
|
|
boolean isInteractive = false;
|
|
|
|
if ((args.length != 3) && (args.length != 0)) {
|
|
System.out.println("usage : java tracker.Tracker (interactive) or java trackerP2P.trackerP2P -- <hostname> <PORT> (" + trackerPortRange +")");
|
|
System.exit(1);
|
|
} else if (args.length == 3) {
|
|
isInteractive = false;
|
|
hostname = args[1];
|
|
port = Integer.valueOf(Integer.parseInt(args[2]));
|
|
} else {
|
|
isInteractive = true;
|
|
System.out.println("Tracker Server, enter hostname to bind (default = localhost): ");
|
|
hostname = scanner.nextLine();
|
|
if (hostname.equals("")) {
|
|
hostname = defaultHostname;
|
|
System.out.println("using default hostname : " + hostname);
|
|
}
|
|
System.out.println("enter port (default = " + trackerPortRange.getDefaultPort() +"): ");
|
|
String portStr = scanner.nextLine();
|
|
if (portStr.equals("")) {
|
|
port = trackerPortRange.getDefaultPort();
|
|
System.out.println("using default port : " + port);
|
|
} else {
|
|
port = Integer.valueOf(Integer.parseInt(portStr));
|
|
}
|
|
}
|
|
|
|
System.out.println("using hostname : " + hostname);
|
|
if (trackerPortRange.isPortInRange(port)) {
|
|
System.out.println("using port : " + port);
|
|
t = new Tracker(hostname, port, isInteractive);
|
|
TrackerManagementUDP tmudp = new TrackerManagementUDP(t.tracker, t.logger);
|
|
TrackerManagementTCP tmtcp = new TrackerManagementTCP(t.tracker, t.logger);
|
|
Thread tudp = new Thread(tmudp);
|
|
tudp.setName("Tracker UDP P2P-JAVA-PROJECT");
|
|
tudp.start();
|
|
Thread ttcp = new Thread(tmtcp);
|
|
ttcp.setName("Tracker TCP P2P-JAVA-PROJECT");
|
|
ttcp.start();
|
|
} else {
|
|
System.out.println("Port not in range. " + trackerPortRange);
|
|
System.exit(2);
|
|
}
|
|
}
|
|
}
|