1
0
Fork 0
Esse commit está contido em:
mrbesen 2017-05-21 16:24:46 +02:00
commit 79b608d156
8 arquivos alterados com 38 adições e 37 exclusões

Ver arquivo

@ -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!");
}
}
}

Ver arquivo

@ -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

Ver arquivo

@ -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) {

Ver arquivo

@ -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);
}

Ver arquivo

@ -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<Job>{
@ -21,19 +20,13 @@ public class JobManager implements Iterator<Job>{
private List<Job> done = new ArrayList<Job>();//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<Job>{
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
}
}

Ver arquivo

@ -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);

Ver arquivo

@ -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) {}
}

Ver arquivo

@ -96,8 +96,4 @@ public class PrimeFinder extends Program {
e.printStackTrace();
}
}
@Override
public void requestnewjobs(int amount) {}
}