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()); }
private bool AcceptAndPop(IRuleNode node) { node.Accept(this); return(_stack.Pop()); }