Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>
        /// returns a hashtable containing 2 keys.
        /// 1. expire-items
        /// 2. resync-items
        /// against these 2, associated cache keys are returned.
        /// </returns>
        internal IDictionary GetExpiredKeys()
        {
            ClusteredArrayList sqlKeyList = _sqlConPool.GetExpiredKeys();

            sqlKeyList.AddRange(_oledbConPool.GetExpiredKeys());

            if (sqlKeyList != null && sqlKeyList.Count > 0)
            {
                HashVector         cacheKeyList = new HashVector();
                ClusteredArrayList expire       = new ClusteredArrayList();
                ClusteredArrayList resync       = new ClusteredArrayList();

                IEnumerator ie = sqlKeyList.GetEnumerator();
                lock (_dbKeysMappingTbl.SyncRoot)
                {
                    while (ie.MoveNext())
                    {
                        if (_dbKeysMappingTbl.Contains(ie.Current))
                        {
                            DependencyInformation depInfo = _dbKeysMappingTbl[ie.Current] as DependencyInformation;
                            if (depInfo != null)
                            {
                                if (depInfo.Hint.NeedsReSync)
                                {
                                    resync.Add(depInfo.CacheKey);
                                }
                                else
                                {
                                    expire.Add(depInfo.CacheKey);
                                }
                            }
                        }
                    }

                    cacheKeyList["expire-items"] = expire;
                    cacheKeyList["resync-items"] = resync;
                    return(cacheKeyList);
                }
            }

            return(new HashVector());
        }