示例#1
0
 public bool FunctionExists(string name)
 {
     lock (_scriptHost)
     {
         return(_scriptHost.FunctionExists(name));
     }
 }
        public WirehomeDictionary GetStatus()
        {
            if (!_scriptHost.FunctionExists("get_status"))
            {
                return(new WirehomeDictionary());
            }

            return((WirehomeDictionary)_scriptHost.InvokeFunction("get_status"));
        }
示例#3
0
        public WirehomeDictionary GetDebugInformation(WirehomeDictionary parameters)
        {
            if (!_scriptHost.FunctionExists(GetDebugInformationFunctionName))
            {
                return(new WirehomeDictionary().WithType(ControlType.NotSupportedException));
            }

            if (!(_scriptHost.InvokeFunction(GetDebugInformationFunctionName, parameters) is WirehomeDictionary result))
            {
                return(new WirehomeDictionary().WithType(ControlType.ReturnValueTypeMismatchException));
            }

            return(result);
        }
示例#4
0
        public WirehomeDictionary Destroy()
        {
            if (_scriptHost == null)
            {
                return(new WirehomeDictionary().WithType(ControlType.Success));
            }

            if (_scriptHost.FunctionExists("destroy"))
            {
                var result = _scriptHost.InvokeFunction("destroy") as WirehomeDictionary;
                return(result);
            }

            return(new WirehomeDictionary().WithType(ControlType.Success));
        }
        public PythonDictionary GetDebugInformation(PythonDictionary parameters)
        {
            if (!_scriptHost.FunctionExists(GetDebugInformationFunctionName))
            {
                return(new PythonDictionary
                {
                    ["type"] = WirehomeMessageType.NotSupportedException
                });
            }

            if (!(_scriptHost.InvokeFunction(GetDebugInformationFunctionName, parameters) is PythonDictionary result))
            {
                return(new PythonDictionary
                {
                    ["type"] = WirehomeMessageType.ReturnValueTypeMismatchException
                });
            }

            return(result);
        }
示例#6
0
        public IDictionary <object, object> Destroy()
        {
            if (_scriptHost == null)
            {
                return(new Dictionary <object, object>
                {
                    ["type"] = WirehomeMessageType.Success
                });
            }

            if (_scriptHost.FunctionExists("destroy"))
            {
                return(_scriptHost.InvokeFunction("destroy") as IDictionary <object, object>);
            }

            return(new Dictionary <object, object>
            {
                ["type"] = WirehomeMessageType.Success
            });
        }
        private bool TryInitializeScript(string uid, string scriptCode, out PythonScriptHost scriptHost)
        {
            try
            {
                scriptHost = _pythonEngineService.CreateScriptHost(_logger);
                scriptHost.Initialize(scriptCode);

                if (scriptHost.FunctionExists("initialize"))
                {
                    scriptHost.InvokeFunction("initialize");
                }

                return(true);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, $"Error while initializing startup script '{uid}'.");

                scriptHost = null;
                return(false);
            }
        }