Ejemplo n.º 1
0
 /// <summary>Remove all items from index</summary>
 public void ClearIndex()
 {
     LruLock.GetWriteLock(_lock, _lockTimeout, delegate
     {
         _index.Clear();
         return(true);
     });
 }
Ejemplo n.º 2
0
 private INode GetNode(KeyType key)
 {
     return(LruLock.GetReadLock(_lock, _lockTimeout, delegate
     {
         WeakReference value;
         return (INode)(_index.TryGetValue(key, out value) ? value.Target : null);
     }));
 }
Ejemplo n.º 3
0
            /// <summary>Add new item to index</summary>
            /// <param name="item">item to add</param>
            /// <returns>was item key previously contained in index</returns>
            public bool AddItem(INode item)
            {
                KeyType key = _getKey(item.Value);

                return(LruLock.GetWriteLock(_lock, _lockTimeout, delegate
                {
                    bool isDup = _index.ContainsKey(key);
                    _index[key] = new WeakReference(item, false);
                    return isDup;
                }));
            }
Ejemplo n.º 4
0
 /// <summary>removes all items from index and reloads each item (this gets rid of dead nodes)</summary>
 public int RebuildIndex()
 {
     lock (_owner._lifeSpan)
         return(LruLock.GetWriteLock(_lock, _lockTimeout, delegate
         {
             _index.Clear();
             foreach (INode item in _owner._lifeSpan)
             {
                 AddItem(item);
             }
             return _index.Count;
         }));
 }