summaryrefslogtreecommitdiffstats
path: root/gearman/java/ControllerWorker/SomePingWorker.java
diff options
context:
space:
mode:
authorBjörn Geiger2011-07-21 16:53:53 +0200
committerBjörn Geiger2011-07-21 16:53:53 +0200
commit5a7a66831bcea58ec6791a284026700582bd240e (patch)
treeadb958c9163b34e120aa54b750b44b9db2988121 /gearman/java/ControllerWorker/SomePingWorker.java
parentGearmanController übergibt nun JSON (diff)
downloadpoolctrl-5a7a66831bcea58ec6791a284026700582bd240e.tar.gz
poolctrl-5a7a66831bcea58ec6791a284026700582bd240e.tar.xz
poolctrl-5a7a66831bcea58ec6791a284026700582bd240e.zip
Controller Worker nun mit 'GameLoop'
Diffstat (limited to 'gearman/java/ControllerWorker/SomePingWorker.java')
-rw-r--r--gearman/java/ControllerWorker/SomePingWorker.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/gearman/java/ControllerWorker/SomePingWorker.java b/gearman/java/ControllerWorker/SomePingWorker.java
new file mode 100644
index 0000000..45e8dcf
--- /dev/null
+++ b/gearman/java/ControllerWorker/SomePingWorker.java
@@ -0,0 +1,60 @@
+package ControllerWorker;
+
+import org.gearman.client.GearmanClient;
+import org.gearman.client.GearmanClientImpl;
+import org.gearman.client.GearmanJob;
+import org.gearman.client.GearmanJobImpl;
+import org.gearman.client.GearmanJobResult;
+import org.gearman.client.GearmanJobResultImpl;
+import org.gearman.common.GearmanJobServerConnection;
+import org.gearman.common.GearmanNIOJobServerConnection;
+import org.gearman.util.ByteUtils;
+import org.gearman.worker.AbstractGearmanFunction;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONValue;
+
+public class SomePingWorker extends AbstractGearmanFunction {
+ @Override
+ public String getName() {
+ return "somePing";
+ }
+
+ @Override
+ public GearmanJobResult executeFunction() {
+ final GearmanJobServerConnection connection = new GearmanNIOJobServerConnection(
+ "127.0.0.1", 4730);
+ GearmanClient client = new GearmanClientImpl();
+ client.addJobServer(connection);
+ String data = ByteUtils.fromUTF8Bytes((byte[]) this.data);
+ JSONArray jsonArray = (JSONArray) JSONValue.parse(data);
+ int count = 0;
+ String res = "";
+
+ for (Object ipObj : jsonArray) {
+ String ip = ipObj.toString();
+ System.out.println("Ping " + ip);
+ GearmanJob job = GearmanJobImpl.createJob("ping", ip.getBytes(),
+ "pingJob");
+ client.submit(job);
+ try {
+ GearmanJobResult jobRes = job.get();
+ if (count == 0) {
+ res += ByteUtils.fromUTF8Bytes(jobRes.getResults());
+ } else {
+ res += "; " + ByteUtils.fromUTF8Bytes(jobRes.getResults());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ count++;
+ }
+ byte[] warnings = new byte[0];
+ byte[] exceptions = new byte[0];
+ int numerator = 0;
+ int denominator = 0;
+ GearmanJobResult gjr = new GearmanJobResultImpl(this.jobHandle, true,
+ res.getBytes(), warnings, exceptions, numerator, denominator);
+ return gjr;
+ }
+} \ No newline at end of file