Esempio n. 1
0
 public CacheEntry(CacheEntryIdentifier identifier, object value, TimeSpan expirationPeriod)
 {
     Identifier            = identifier;
     Value                 = value;
     this.ExpirationPeriod = expirationPeriod;
     ValidUntil            = DateTime.Now.Add(expirationPeriod);
 }
Esempio n. 2
0
 public void Remove(CacheEntryIdentifier key)
 {
     if (cacheEntriesMap.TryGetValue(key, out var value))
     {
         cacheEntriesList.Remove(value);
         cacheEntriesMap.Remove(key);
     }
 }
Esempio n. 3
0
        public void Add(string key, object value, TimeSpan?validUntil = null)
        {
            var expiration  = validUntil ?? TimeSpan.FromDays(1000);
            var indentifier = new CacheEntryIdentifier(key, options);
            var cacheEntry  = new CacheEntry(indentifier, value, expiration);

            cacheStore.AddEntry(cacheEntry);
        }
Esempio n. 4
0
 public T Get(CacheEntryIdentifier key)
 {
     // if key exists, just move it to the start the line
     if (cacheEntriesMap.TryGetValue(key, out var value))
     {
         MoveNodeToFront(value);
         return(value.Value);
     }
     return(default(T));
 }
Esempio n. 5
0
 public void RemoveEntry(string key)
 {
     wrLock.EnterWriteLock();
     try
     {
         var identifier = new CacheEntryIdentifier(key, options);
         cacheEntries.Remove(identifier);
     }
     finally
     {
         wrLock.ExitWriteLock();
     }
 }
Esempio n. 6
0
 public CacheEntry GetEntry(string key)
 {
     wrLock.EnterUpgradeableReadLock();
     try
     {
         var identifier = new CacheEntryIdentifier(key, options);
         var cacheEntry = cacheEntries.Get(identifier);
         // check if null
         if (cacheEntry == null)
         {
             return(null);
         }
         // check if entry has expired
         if (cacheEntry.HasExpired())
         {
             wrLock.EnterWriteLock();
             try
             {
                 cacheEntries.Remove(identifier);
                 return(null);
             }
             finally
             {
                 wrLock.ExitWriteLock();
             }
         }
         else
         {
             // update the valid time
             cacheEntry.UpdateValidUntil();
             return(cacheEntry);
         }
     }
     finally
     {
         wrLock.ExitUpgradeableReadLock();
     }
 }
Esempio n. 7
0
        public static CacheEntry New(string key, object value, TimeSpan timeSpan, LRUCacheOptions options = null)
        {
            var indentifier = new CacheEntryIdentifier(key, options ?? new LRUCacheOptions());

            return(new CacheEntry(indentifier, value, timeSpan));
        }