Example #1
0
        public void DontFillUp()
        {
            // NH-1671
            const int count = 32;
            var       s     = new SoftLimitMRUCache(count);

            for (int i = 0; i < count + 10; i++)
            {
                s.Put(new object(), new object());
            }
            Assert.That(s.Count, Is.EqualTo(count));

            GC.Collect();
            s.Put(new object(), new object());

            Assert.That(s.SoftCount, Is.EqualTo(count + 1));
        }
        public IQueryExpressionPlan GetHQLQueryPlan(IQueryExpression queryExpression, bool shallow, IDictionary <string, IFilter> enabledFilters)
        {
            var key  = new HQLQueryPlanKey(queryExpression, shallow, enabledFilters);
            var plan = (QueryExpressionPlan)planCache[key];

            if (plan == null)
            {
                if (log.IsDebugEnabled())
                {
                    log.Debug("unable to locate HQL query plan in cache; generating ({0})", queryExpression.Key);
                }
                plan = new QueryExpressionPlan(queryExpression, shallow, enabledFilters, factory);
                // 6.0 TODO: add "CanCachePlan { get; }" to IQueryExpression interface
                if (!(queryExpression is NhLinqExpression linqExpression) || linqExpression.CanCachePlan)
                {
                    planCache.Put(key, plan);
                }
                else
                {
                    log.Debug("Query plan not cacheable");
                }
            }
 public void AddCachedFilter(FilterKey key, Lucene.Net.Search.Filter filter)
 {
     cache.Put(key, filter);
 }