public object Get(string key) { var retrieveOp = TableOperationHelper.Retrieve(key); var retrieveResult = _table.Execute(retrieveOp); var existingCacheEntry = retrieveResult.Result as CacheEntity; if (existingCacheEntry != null && existingCacheEntry.UtcExpiry < DateTime.UtcNow) { Remove(key); return(null); } else { return(existingCacheEntry?.CacheItem); } }
public object Add(string key, object entry, DateTime utcExpiry) { var retrieveOp = TableOperationHelper.Retrieve(key); var retrieveResult = _table.Execute(retrieveOp); var existingCacheEntry = retrieveResult.Result as CacheEntity; if (existingCacheEntry != null && existingCacheEntry.UtcExpiry > DateTime.UtcNow) { return(existingCacheEntry.CacheItem); } else { Set(key, entry, utcExpiry); return(entry); } }
public async Task <object> AddAsync(string key, object entry, DateTime utcExpiry) { // If there is already a value in the cache for the specified key, the provider must return that value if not expired // and must not store the data passed by using the Add method parameters. var retrieveOp = TableOperationHelper.Retrieve(key); var retrieveResult = await _table.ExecuteAsync(retrieveOp); var existingCacheEntry = retrieveResult.Result as CacheEntity; if (existingCacheEntry != null && existingCacheEntry.UtcExpiry > DateTime.UtcNow) { return(existingCacheEntry.CacheItem); } else { await SetAsync(key, entry, utcExpiry); return(entry); } }
public async Task <object> GetAsync(string key) { // Outputcache module will always first call GetAsync // so only calling EnsureTableInitializedAsync here is good enough await EnsureTableInitializedAsync(); var retrieveOp = TableOperationHelper.Retrieve(key); var retrieveResult = await _table.ExecuteAsync(retrieveOp); var existingCacheEntry = retrieveResult.Result as CacheEntity; if (existingCacheEntry != null && existingCacheEntry.UtcExpiry < DateTime.UtcNow) { await RemoveAsync(key); return(null); } else { return(existingCacheEntry?.CacheItem); } }