public static void DequeueCallbacks() { while (Callbacks.Count > 0) { ICallback item; if (Callbacks.TryDequeue(out item)) { try { if (item is Objects.JSHttpRequestResult) { Objects.JSHttpRequestResult obj = (Objects.JSHttpRequestResult)item; JSScript script = Scripts.Find(x => x.ScriptName == item.ScriptName); if (script != null) { obj.Callback.Call(obj, !String.IsNullOrEmpty(obj.Data)); } } else if (item is Objects.JSAvatarImage) { Objects.JSAvatarImage obj = (Objects.JSAvatarImage)item; JSScript script = Scripts.Find(x => x.ScriptName == item.ScriptName); if (script != null) { obj.Callback.Call(obj, obj.Data != null); } } else if (item is Objects.JSScribbleImage) { Objects.JSScribbleImage obj = (Objects.JSScribbleImage)item; JSScript script = Scripts.Find(x => x.ScriptName == item.ScriptName); if (script != null) { obj.Callback.Call(obj, obj.Data != null); } } else if (item is Objects.JSProxyCheckResult) { Objects.JSProxyCheckResult obj = item as Objects.JSProxyCheckResult; JSScript script = Scripts.Find(x => x.ScriptName == item.ScriptName); if (script != null) { obj.Callback.Call(obj, obj.User, obj); } } } catch { } } else { break; } } }
public static bool Load(String f, bool update_autorun) { FileInfo file = null; try { file = new FileInfo(f); file = new FileInfo(Path.Combine(Server.DataPath, file.Name, file.Name)); } catch { return(false); } if (file.Name == "room") { return(false); } int index = Scripts.FindIndex(x => x.ScriptName == file.Name); if (index > 0) { Scripts[index].KillScript(); Scripts.RemoveAt(index); } JSScript script = new JSScript(file.Name); if (File.Exists(file.FullName)) { Scripts.Add(script); if (script.LoadScript(file.FullName)) { try { script.JS.CallGlobalFunction("onLoad"); } catch (Jurassic.JavaScriptException e) { ErrorDispatcher.SendError(script.ScriptName, e.Message, e.LineNumber); } catch { } if (update_autorun) { UpdateAutorun(); } return(true); } } return(false); }
public static void UpdateTimers() { ulong time = Server.Ticks; if (list.Count > 0) { for (int i = (list.Count - 1); i > -1; i--) { if (list[i].StartTime <= (time - (ulong)list[i].Interval)) { Instances.JSTimerInstance timer = list[i]; list.RemoveAt(i); JSScript script = ScriptManager.Scripts.Find(x => x.ScriptName == timer.Engine.ScriptName); if (script != null) { if (script.timer_idents.Contains(timer.IDENT)) { try { if (timer.Callback != null) { timer.Callback.Call(timer.Engine.Global); } } catch (JavaScriptException e) { ErrorDispatcher.SendError(timer.ScriptName, e.Message, e.LineNumber); } catch { } } } } } } }