Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }