diff --git a/Client/BesenBoincClient/src/Core/Starter.java b/Client/BesenBoincClient/src/Core/Starter.java index de5d3e9..c530f92 100755 --- a/Client/BesenBoincClient/src/Core/Starter.java +++ b/Client/BesenBoincClient/src/Core/Starter.java @@ -1,5 +1,7 @@ package Core; +import java.io.IOException; + import Comunication.Client; import Job.Worker; @@ -7,8 +9,8 @@ public class Starter { public static void main(String args[]) { System.out.println("Starting BesenBoincClient..."); - System.out.println("user.dir: " + System.getProperty("user.dir")); + //parsing Arguments String host = BB.host; int port = BB.port; if(args.length >= 1) { @@ -20,8 +22,10 @@ public class Starter { } } } + + //try to connect boolean run = true; - int lost_counter = 0;//ho often loast? + int lost_counter = 0;//how often lost. - higher value - longer wait time until reconnect is tried. long lasttest = -1; while(run) { boolean tryagain = false; @@ -39,17 +43,25 @@ public class Starter { } try { - Thread.yield(); Thread.sleep(500); - } catch(Exception e) {} + } catch(InterruptedException e) {} } - - System.out.println("Connecting to " + host + " on port: " + port); + + //try to connect + System.out.print("Connecting to " + host + " on port: " + port + " "); lasttest = System.currentTimeMillis(); try { - Client c = new Client(host, port, new Worker()); + Worker worker = new Worker(); + Client c; + try { + c = new Client(host, port, worker);//throws IOException on failed connection + } catch (IOException e) { + System.out.println("Failed"); + throw new Exception(e);//do not print stack trace + } - c.run(); + worker.start();//start worker Thread, only if connection is established + c.run();//manage connection if(lost_counter > 0) { int minus = (int) ((System.currentTimeMillis()-lasttest)/10000);//für alle 10 sekunden verbinung ein lost count weniger @@ -58,11 +70,14 @@ public class Starter { else lost_counter -= minus; } + System.out.println("Connection Lost!"); + worker.stop(); + } catch(IOException e) { + e.printStackTrace(); } catch(Exception e) { //failed lost_counter++; } - System.out.println("Connection LOST!"); } } } \ No newline at end of file diff --git a/Server/BesenBoincServer/src/Comunication/Client.java b/Server/BesenBoincServer/src/Comunication/Client.java index 4826df8..7d145a4 100755 --- a/Server/BesenBoincServer/src/Comunication/Client.java +++ b/Server/BesenBoincServer/src/Comunication/Client.java @@ -5,7 +5,6 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.InetAddress; import java.net.Socket; -import java.net.UnknownHostException; public class Client implements Runnable{ private Socket soc; @@ -22,7 +21,7 @@ public class Client implements Runnable{ getStreams(); } - public Client(String addr, int port, PacketHandler hand) throws UnknownHostException, IOException {//client side constructor + public Client(String addr, int port, PacketHandler hand) throws IOException {//client side constructor hold_connection = true; handler = hand; soc = new Socket(InetAddress.getByName(addr), port);//connect diff --git a/Server/BesenBoincServer/src/Comunication/Server.java b/Server/BesenBoincServer/src/Comunication/Server.java index acf4799..fad982f 100755 --- a/Server/BesenBoincServer/src/Comunication/Server.java +++ b/Server/BesenBoincServer/src/Comunication/Server.java @@ -57,7 +57,13 @@ public class Server implements PacketHandler { accept_new_connections = true; System.out.println("Server is Listening on port " + port); - programthread = new Thread(prog, "Programm Thread"); + programthread = new Thread(new Runnable() { + @Override + public void run() { + prog.run(); + System.out.println("Program enqued " + prog.jobmanager.jobs_total() + " Jobs."); + } + }, "Programm Thread"); programthread.start(); System.out.println("Programm execution started"); } catch (IOException e) { diff --git a/Server/BesenBoincServer/src/Core/Program.java b/Server/BesenBoincServer/src/Core/Program.java index 82804a6..c1fcb40 100755 --- a/Server/BesenBoincServer/src/Core/Program.java +++ b/Server/BesenBoincServer/src/Core/Program.java @@ -6,7 +6,7 @@ import Job.Result.PartialResult; public abstract class Program implements Runnable{ - public JobManager jobmanager = new JobManager(this); + public JobManager jobmanager = new JobManager(); public void HandleResult(Result r) { jobmanager.setdone(r.getJobId()); @@ -21,6 +21,4 @@ public abstract class Program implements Runnable{ } public abstract void HandlePartialResult(PartialResult pres); - - public abstract void requestnewjobs(int amount); } \ No newline at end of file diff --git a/Server/BesenBoincServer/src/Job/JobManager.java b/Server/BesenBoincServer/src/Job/JobManager.java index 8f34a77..05c28b1 100755 --- a/Server/BesenBoincServer/src/Job/JobManager.java +++ b/Server/BesenBoincServer/src/Job/JobManager.java @@ -10,7 +10,6 @@ import java.util.List; import java.util.Scanner; import Comunication.Server; -import Core.Program; import Utils.StringUtils; public class JobManager implements Iterator{ @@ -21,19 +20,13 @@ public class JobManager implements Iterator{ private List done = new ArrayList();//done jobs private int jobcount = 0; - - private Program prog; - - public JobManager(Program prog) { - this.prog = prog; - } private boolean isCompiling = false; public void enque(Job newjob) { + jobcount++; newjob.setId(jobcount); enqued.add(newjob); - jobcount++; update(); } @@ -123,9 +116,6 @@ public class JobManager implements Iterator{ public void update() {//called from Server on new Client Connection if(enqued.size() > 0 & !isCompiling & todo.size() < jobs_compiledtarget()) {//7 für jede connection vorrätig startCompile(); - } else if(enqued.size() < jobs_compiledtarget()) { - System.out.println("All jobs done."); - prog.requestnewjobs(jobs_compiledtarget() * 15);//mal nen par generieren } } diff --git a/Server/BesenBoincServer/src/Job/Worker.java b/Server/BesenBoincServer/src/Job/Worker.java index 920b0f5..766a715 100755 --- a/Server/BesenBoincServer/src/Job/Worker.java +++ b/Server/BesenBoincServer/src/Job/Worker.java @@ -21,8 +21,8 @@ public class Worker implements PacketHandler, Runnable{ private Client client; private long lastasked = System.currentTimeMillis(); private boolean run = true; - - public Worker() { + + public void start() { Thread workerthread = new Thread(this, "Worker"); workerthread.start(); } @@ -45,7 +45,7 @@ public class Worker implements PacketHandler, Runnable{ if(jobs.size()>0) { System.out.print("Executing Job: " + jobs.get(0).getId()); Result r = justrun(jobs.get(0)); - System.out.println("Done."); + System.out.println(" Done."); if(r != null) { client.send(new Data(r)); jobs.remove(0); diff --git a/test-factorial/BBTestprogram/src/Test.java b/test-factorial/BBTestprogram/src/Test.java index cb4da21..d1adfd7 100755 --- a/test-factorial/BBTestprogram/src/Test.java +++ b/test-factorial/BBTestprogram/src/Test.java @@ -7,14 +7,11 @@ public class Test extends Program { @Override public void run() { for(int c = 5; c < 1000; c++) { - String code = "import Job.Job;\nimport Job.Result;\nimport Job.Result.PartialResult;\nimport Job.Jobsrc;\npublic class A" + c + " extends Jobsrc {\n@Override\npublic Result run() {\ndouble i ="+c+";\nfor(int n = 2; n < " + c + ";n++){\n i *= n;\n}\n Result r = new Result();\nr.OutputConsole(\"!"+c+"= \"+i);\n return r;\n }}"; + String code = "import Job.Job;\nimport Job.Result;\nimport Job.Result.PartialResult;\nimport Job.Jobsrc;\npublic class A" + c + " extends Jobsrc {\n@Override\npublic Result run() {\ndouble i ="+c+";\nfor(int n = 2; n < " + c + ";n++){\n i *= n;\n}\n Result r = new Result(" + (jobmanager.jobs_total() +1) +");\nr.OutputConsole(\"!"+c+"= \"+i);\n return r;\n }}"; jobmanager.enque(new Job(code)); } } @Override public void HandlePartialResult(PartialResult pres) {}//unused - - @Override - public void requestnewjobs(int amount) {} } \ No newline at end of file diff --git a/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java b/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java index 0918ab6..d3c688a 100755 --- a/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java +++ b/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java @@ -96,8 +96,4 @@ public class PrimeFinder extends Program { e.printStackTrace(); } } - - - @Override - public void requestnewjobs(int amount) {} } \ No newline at end of file