/// <inheritdoc />
        public bool[] PutMany(
            QueryKey[] keys,
            QueryParameters[] queryParameters,
            ICacheAssembler[][] returnTypes,
            IList[] results,
            ISessionImplementor session)
        {
            if (Log.IsDebugEnabled())
            {
                Log.Debug("caching query results in region: '{0}'; {1}", _regionName, StringHelper.CollectionToString(keys));
            }

            var cached        = new bool[keys.Length];
            var ts            = session.Factory.Settings.CacheProvider.NextTimestamp();
            var cachedKeys    = new List <object>();
            var cachedResults = new List <object>();

            for (var i = 0; i < keys.Length; i++)
            {
                var result = results[i];
                if (queryParameters[i].NaturalKeyLookup && result.Count == 0)
                {
                    continue;
                }

                cached[i] = true;
                cachedKeys.Add(keys[i]);
                cachedResults.Add(GetCacheableResult(returnTypes[i], session, result, ts));
            }

            _cache.PutMany(cachedKeys.ToArray(), cachedResults.ToArray());

            return(cached);
        }
Пример #2
0
        private void SetSpacesTimestamp(IReadOnlyCollection <string> spaces, long ts)
        {
            if (spaces.Count == 0)
            {
                return;
            }

            _updateTimestamps.PutMany(
                spaces.ToArray <object>(),
                ArrayHelper.Fill <object>(ts, spaces.Count));
        }
Пример #3
0
        private void SetSpacesTimestamp(IReadOnlyCollection <string> spaces, long ts)
        {
            if (spaces.Count == 0)
            {
                return;
            }

            var timestamps = new object[spaces.Count];

            for (var i = 0; i < timestamps.Length; i++)
            {
                timestamps[i] = ts;
            }

            _updateTimestamps.PutMany(spaces.ToArray(), timestamps);
        }