public void SendCommand(IIotEntity entity, string commandName, params object[] args)
        {
            var type       = entity.EntityType;
            var openCast2  = _commandDispatcherService.GetType().GetMethod(nameof(_commandDispatcherService.DispatchCommand));
            var closeCase2 = openCast2.MakeGenericMethod(new[] { AssemblyUtils.GetType(type) });

            var cmd = closeCase2.Invoke(_commandDispatcherService, new object[] { entity, commandName, args });
        }
Ejemplo n.º 2
0
        private void ExecuteCSharpRule(RuleInfo rule, IIotEntity entity)
        {
            var func = (Func <IIotEntity, bool>)rule.RuleCondition;

            if (func.Invoke(entity))
            {
                rule.Action.Invoke(entity);
            }
        }
Ejemplo n.º 3
0
        private void ExecuteLuaRule(RuleInfo rule, IIotEntity entity)
        {
            var lParser = new LambdaParser();
            var context = new Dictionary <string, object> {
                { "entity", entity }, { "rule", rule }
            };


            var bResult = (bool)lParser.Eval((string)rule.RuleCondition, context);

            if (bResult)
            {
                _logger.LogInformation($"Executing rule {rule.RuleName}");
                rule.Action.Invoke(entity);
            }
        }
Ejemplo n.º 4
0
        private void ParseRule(IIotEntity entity)
        {
            Rules.Where(r => r.EntityType == entity.GetType()).ToList().ForEach(r =>
            {
                switch (r.RuleType)
                {
                case RuleTypeEnum.CSharp:
                    ExecuteCSharpRule(r, entity);
                    break;

                case RuleTypeEnum.Lambda:
                    ExecuteLuaRule(r, entity);
                    break;

                case RuleTypeEnum.Lua:
                    ExecuteLuaRule(r, entity);
                    break;
                }
            });
        }