Esempio n. 1
0
        public bool Evaluate(RequestInfo reqInfo)
        {
            if (reqInfo == null)
            {
                throw new RateLimiterException("Missing request input");
            }
            if (_lastRule.Count == 0 && _ruleNodeCache == null)
            {
                throw new RateLimiterException("Missing entries for a rule. Please call First, Or, Add functions to add a new rule");
            }

            if (_lastRule.Count > 0)
            {
                _ruleNodeCache = _lastRule.Pop();
            }

            _rulesVisitor.AddRequestInfo(reqInfo);

            _ruleNodeCache.Accept(_rulesVisitor);
            return(_rulesVisitor.Result());
        }
Esempio n. 2
0
 private bool AcceptAndPop(IRuleNode node)
 {
     node.Accept(this);
     return(_stack.Pop());
 }