public void EnqueueRequest(CukunityRequest req) { lock (requests) { requests.Add(req); } }
private string ProcessLineRequest(string line) { string request = line.TrimEnd('\r', '\n'); CukunityRequest req = new CukunityRequest(request, signal); // reset signal signal.Reset(); // add request to que server.EnqueueRequest(req); // wait for completion signal.WaitOne(); return(req.Response); }
private void ProcessRequest(CukunityRequest req) { Hashtable res = new Hashtable(); try { // read data from client as a JSON dictionary Hashtable jsonReq = JsonReader.Deserialize <Hashtable>(req.Request); string cmdName = GetJsonString(jsonReq, "command"); if ((cmdName == null) || (cmdName.Length == 0)) { Debug.LogError("Cukunity: missing command in client's request (" + req.Request + ")"); res["error"] = "MissingCommandError"; req.OnProcessed(JsonWriter.Serialize(res)); return; } CukunityCommand cmd; switch (cmdName) { case "get_screen": cmd = new CukunityGetScreenCommand(); break; case "get_scene": cmd = new CukunityGetSceneCommand(); break; case "get_level": cmd = new CukunityGetLevelCommand(); break; case "load_level": cmd = new CukunityLoadLevelCommand(); break; #if UNITY_IPHONE case "touch_screen": cmd = new CukunityTouchScreenCommand(); break; #endif default: Debug.LogError("Cukunity: unknown command in client's request (" + req.Request + ")"); res["error"] = "UnknownCommandError"; req.OnProcessed(JsonWriter.Serialize(res)); return; } cmd.Process(jsonReq, res); } catch (Exception e) { Debug.LogError("Cukunity: exception while processing client's request (" + e + ")"); res["error"] = "ServerError"; } // reply to client req.OnProcessed(JsonWriter.Serialize(res)); }