summaryrefslogtreecommitdiffstats
path: root/gearman
diff options
context:
space:
mode:
authorBjörn Geiger2011-07-26 18:07:12 +0200
committerBjörn Geiger2011-07-26 18:07:12 +0200
commit2704bb9a5e1b6aa77336f686716a2b5536a168c9 (patch)
tree0f79eea01ebfccedda5c4c4f7bed07f092c26b46 /gearman
parentgearman java sourcen hinzugefügt (diff)
downloadpoolctrl-2704bb9a5e1b6aa77336f686716a2b5536a168c9.tar.gz
poolctrl-2704bb9a5e1b6aa77336f686716a2b5536a168c9.tar.xz
poolctrl-2704bb9a5e1b6aa77336f686716a2b5536a168c9.zip
somePingWorker korrigiert
Diffstat (limited to 'gearman')
-rw-r--r--gearman/controllerWorker/ControllerWorker/SomePingWorker.java75
1 files changed, 44 insertions, 31 deletions
diff --git a/gearman/controllerWorker/ControllerWorker/SomePingWorker.java b/gearman/controllerWorker/ControllerWorker/SomePingWorker.java
index d37745c..03e001b 100644
--- a/gearman/controllerWorker/ControllerWorker/SomePingWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/SomePingWorker.java
@@ -1,5 +1,6 @@
package ControllerWorker;
+import java.io.IOException;
import java.util.*;
import java.util.concurrent.ExecutionException;
@@ -9,6 +10,7 @@ import org.gearman.client.GearmanJob;
import org.gearman.client.GearmanJobImpl;
import org.gearman.client.GearmanJobResult;
import org.gearman.client.GearmanJobResultImpl;
+import org.gearman.client.GearmanJobStatus;
import org.gearman.common.GearmanJobServerConnection;
import org.gearman.common.GearmanNIOJobServerConnection;
import org.gearman.util.ByteUtils;
@@ -31,59 +33,70 @@ public class SomePingWorker extends AbstractGearmanFunction {
client.addJobServer(connection);
String data = ByteUtils.fromUTF8Bytes((byte[]) this.data);
JSONArray jsonArray = (JSONArray) JSONValue.parse(data);
- int count = 0;
String res = "";
-
List<GearmanJob> jobs = new ArrayList<GearmanJob>();
for (Object ipObj : jsonArray) {
String ip = ipObj.toString();
System.out.println("Ping " + ip);
GearmanJob job = GearmanJobImpl.createJob("ping", ip.getBytes(),
- "pingJob");
+ "ping" + ip);
client.submit(job);
jobs.add(job);
- count++;
}
-
- Boolean exit=false;
+
+ Boolean exit = false;
+ List<GearmanJob> remove = new ArrayList<GearmanJob>();
+
while (!exit) {
ListIterator<GearmanJob> it = jobs.listIterator();
+ int count = 0;
+
while (it.hasNext()) {
-
GearmanJob j = it.next();
- if (j.isDone()) {
- System.out.println("job done..");
- GearmanJobResult jobRes;
- try {
- jobRes = j.get();
+ GearmanJobStatus jStatus;
+ try {
+ jStatus = client.getJobStatus(j);
+ if (!jStatus.isKnown() && j.isDone()) {
+ GearmanJobResult jobRes = j.get();
if (count == 0) {
res += ByteUtils.fromUTF8Bytes(jobRes.getResults());
} else {
- res += "; " + ByteUtils.fromUTF8Bytes(jobRes.getResults());
+ res += "; "
+ + ByteUtils.fromUTF8Bytes(jobRes
+ .getResults());
}
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ExecutionException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ remove.add(j);
}
- } else {
- System.out.println("job not yet done ....");
- }
-/* try {
- GearmanJobResult jobRes = j.get();
- if (count == 0) {
- res += ByteUtils.fromUTF8Bytes(jobRes.getResults());
- } else {
- res += "; " + ByteUtils.fromUTF8Bytes(jobRes.getResults());
- }
- } catch (Exception e) {
+ } catch (IllegalStateException e1) {
+ e1.printStackTrace();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
e.printStackTrace();
- }*/
+ }
+
+ count++;
+
+ /*
+ * try { GearmanJobResult jobRes = j.get(); if (count == 0) {
+ * res += ByteUtils.fromUTF8Bytes(jobRes.getResults()); } else {
+ * res += "; " + ByteUtils.fromUTF8Bytes(jobRes.getResults()); }
+ * } catch (Exception e) { e.printStackTrace(); }
+ */
}
+
+ ListIterator<GearmanJob> it2 = remove.listIterator();
+
+ while (it2.hasNext()) {
+ jobs.remove(it2.next());
+ }
+
+ remove.clear();
}
+
byte[] warnings = new byte[0];
byte[] exceptions = new byte[0];
int numerator = 0;