BB/Server/BesenBoincServer/src/Core/Starter.java

77 lines
2.4 KiB
Java
Executable File

package Core;
import java.util.Scanner;
import Comunication.Server;
import Job.JobManager;
public class Starter {
/**
*
* @param args c:[classname] p:[port]
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
System.out.println("Starting BesenBoincServer...");
String classname = "Test";//load programm
int port = BB.port;
for(String arg : args) {
if(arg.contains(":")) {
String[] split = arg.split(":",2);
if(split[0].equalsIgnoreCase("c")) {
classname = split[1];
} else if(split[0].equalsIgnoreCase("p")) {
try {
port = Integer.parseInt(split[1]);
if(port < 0 | port > 65535) {
throw new NumberFormatException();
}
if(port < 1024) {
System.out.println("Root required to use this port.");
}
} catch(NumberFormatException e) {
System.out.println("Thats not a valid port: " + split[1]);
}
}
} else {
System.out.println("Arguments: c:[classfile] p:[port]");
System.exit(1);
}
}
Program prog = null;
prog = loadProgram(classname);
Server server = (new Server()).setProgram(prog).open(port);//start server
boolean run = true;
Scanner s = new Scanner(System.in);
while(run) {
String in = s.nextLine();
if(in.equalsIgnoreCase("stop")) {
System.out.println("Stopping Server...");
Server.getServer().close();
run = false;
} else if(in.equalsIgnoreCase("stats")) {
JobManager jm = server.getProgram().getJobManager();
System.out.println("\nStats:\nTasks done : " + jm.jobs_done() + "\nTasks send : " + jm.jobs_send() + "\nTasks compiled: " + jm.jobs_compiled() + "/" + jm.jobs_compiledtarget() + "\nCurrently Compiling: " + jm.isCompiling() + "\nTasks enqued : " + jm.jobs_enqued() + "\n--------------------\ntotal : " + jm.jobs_total()+ "\nConnections: " + server.getConnectionCount());
} else {
System.out.println("unknown Command.");
}
}
s.close();
}
public static Program loadProgram(String classname) throws ClassNotFoundException{
System.out.println("Try to load class: " + classname);
Program prog = null;
try {
prog = (Program) Class.forName(classname).newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
if(prog == null)
throw new ClassNotFoundException("Could not load Programm called: " + classname);
return prog;
}
}