public static TransformerBase GetTransformerInstance(TransformerDefinition definition) { var list = new List <string> { definition.TransformResults }; var key = new CacheKey(list); Func <TransformerBase> createTransformer = () => IndexAndTransformerCompiler.Compile(definition); var result = TransformerCache.GetOrAdd(key, _ => new Lazy <TransformerBase>(createTransformer)); return(result.Value); }
public static StaticIndexBase GetIndexInstance(IndexDefinition definition) { var list = new List <string>(); list.AddRange(definition.Maps); if (definition.Reduce != null) { list.Add(definition.Reduce); } var key = new CacheKey(list); Func <StaticIndexBase> createIndex = () => IndexAndTransformerCompiler.Compile(definition); var result = IndexCache.GetOrAdd(key, _ => new Lazy <StaticIndexBase>(createIndex)); return(result.Value); }