コード例 #1
0
        public JavaScriptHandle(JsContext jsc, string init, ICollection <int> providers, DictionaryCache cache, TunnelReceivier ontunnel)
        {
            this.jsc   = jsc;
            this.cache = cache != null ? cache : new SimpleDictionaryCache();
            TunnelReceivier _ontunnel = (providerid, label, data) =>
            {
                if (providerid == AuanyService.providerId)
                {
                    if (lmkDataReceiver != null)
                    {
                        lmkDataReceiver.onLmkData(data, () => tunnel(AuanyService.providerId, -1, ""));
                    }
                }
                else if (ontunnel != null)
                {
                    ontunnel(providerid, label, data);
                }
            };

            jsc.sync(js =>
            {
                js.name("limax.js").eval(limax.script.codes.js.limax);
                js.name("cache").eval("var cache=<0>", this.cache);
                js.name("ontunnel").eval("var ontunnel=<0>", _ontunnel);
                js.name("initscript").eval(init);
                if (providers == null || providers.Count == 0)
                {
                    foreach (object pvid in (JsArray)js.eval("providers"))
                    {
                        this.providers.Add((int)pvid);
                    }
                }
                else
                {
                    foreach (var pvid in providers)
                    {
                        this.providers.Add(pvid);
                    }
                }
                this.instance = (JsFunction)js.name("").eval("limax");
            });
        }
コード例 #2
0
ファイル: luacs.cs プロジェクト: dwing4g/limax
        public LuaScriptHandle(Lua lua, string init, ICollection <int> providers, DictionaryCache cache, TunnelReceivier ontunnel)
        {
            this.lua   = lua;
            this.cache = cache != null ? cache : new SimpleDictionaryCache();
            TunnelReceivier _ontunnel = (providerid, label, data) =>
            {
                if (providerid == AuanyService.providerId)
                {
                    if (lmkDataReceiver != null)
                    {
                        lmkDataReceiver.onLmkData(data, () => tunnel(AuanyService.providerId, -1, ""));
                    }
                }
                else if (ontunnel != null)
                {
                    ontunnel(providerid, label, data);
                }
            };
            IDictionary r = (IDictionary)lua.name("initscript").eval(init);

            if (providers == null || providers.Count == 0)
            {
                foreach (object pvid in ((IDictionary)r["pvids"]).Values)
                {
                    this.providers.Add((int)(long)pvid);
                }
            }
            else
            {
                foreach (int pvid in providers)
                {
                    this.providers.Add(pvid);
                }
            }
            this.instance = (LuaFunction)lua.name("").eval("return <0>(<1>,<2>,<3>)", lua.name("limax.lua").eval(limax.script.codes.lua.limax), r["callback"], this.cache, _ontunnel);
        }