summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java3
-rw-r--r--gearman/controllerWorker/ControllerWorker/ShutdownWorker.java54
2 files changed, 56 insertions, 1 deletions
diff --git a/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java b/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
index 15df890..c52e9bc 100755
--- a/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
+++ b/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
@@ -11,8 +11,9 @@ public class ControllerWorkerMain {
"127.0.0.1", 4730);
GearmanWorker bootWorker = new GearmanWorkerImpl();
bootWorker.registerFunction(BootWorker.class);
- bootWorker.registerFunction(SomePingWorker.class);
+ bootWorker.registerFunction(ShutdownWorker.class);
bootWorker.registerFunction(StatusWorker.class);
+ bootWorker.registerFunction(SomePingWorker.class);
bootWorker.addServer(connection);
bootWorker.work();
}
diff --git a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
new file mode 100644
index 0000000..b454cca
--- /dev/null
+++ b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
@@ -0,0 +1,54 @@
+package ControllerWorker;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+import org.gearman.client.GearmanJobResult;
+import org.gearman.client.GearmanJobResultImpl;
+import org.gearman.util.ByteUtils;
+import org.gearman.worker.AbstractGearmanFunction;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.JSONValue;
+
+public class ShutdownWorker extends AbstractGearmanFunction {
+ @Override
+ public String getName() {
+ return "shutdown";
+ }
+
+ @Override
+ public GearmanJobResult executeFunction() {
+ String data = ByteUtils.fromUTF8Bytes((byte[]) this.data);
+ Vector<HashMap<String, String>> clients = new Vector<HashMap<String, String>>();
+ JSONObject jsonObject = (JSONObject) JSONValue.parse(data);
+ String event = jsonObject.get("eventName").toString();
+ int updateRate = Integer.parseInt(jsonObject.get("updateRate")
+ .toString());
+ JSONArray jsonArray = (JSONArray) jsonObject.get("clients");
+
+ for (Object clientObj : jsonArray) {
+ JSONObject clientJsonObj = (JSONObject) clientObj;
+ HashMap<String, String> clientMap = new HashMap<String, String>();
+ clientMap.put("id", clientJsonObj.get("id").toString());
+ clientMap.put("ip", clientJsonObj.get("ip").toString());
+ clientMap.put("mac", clientJsonObj.get("mac").toString());
+ clients.add(clientMap);
+ }
+
+ Shutdown shutdown = new Shutdown("127.0.0.1", 4730, clients, updateRate);
+ StatusWorker.SHUTDOWNTHREADS.put(event, shutdown);
+ shutdown.start();
+ System.out.println("Shutdown started");
+ String res = "Shutdown started";
+
+ 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