コード例 #1
0
ファイル: LogParser.cs プロジェクト: wsharba/edocs
        private RuleResult RuleApplyCached(ILineRule rule, int index, string line)
        {
            RuleResult result;
            ConcurrentDictionary <int, RuleResult> results;

            if (CachedResults.ContainsKey(rule))
            {
                results = CachedResults[rule];
                if (results.ContainsKey(index))
                {
                    return(results[index]);
                }
            }
            else
            {
                results = new ConcurrentDictionary <int, RuleResult>();
                CachedResults.AddOrUpdate(rule, results, (ru, rs) => rs);
            }

            result = rule.Apply(line);
            results.AddOrUpdate(index, result, (i, r) => r);
            return(result);
        }
コード例 #2
0
ファイル: LogParser.cs プロジェクト: rexwhitten/edocs
        private RuleResult RuleApplyCached(ILineRule rule, int index, string line)
        {
            RuleResult result;
            ConcurrentDictionary<int, RuleResult> results;
            if(CachedResults.ContainsKey(rule)) {
                results = CachedResults[rule];
                if(results.ContainsKey(index))
                    return results[index];
            }
            else {
                results = new ConcurrentDictionary<int, RuleResult>();
                CachedResults.AddOrUpdate(rule, results, (ru, rs) => rs);
            }

            result = rule.Apply(line);
            results.AddOrUpdate(index, result, (i, r) => r);
            return result;
        }