public void GetLastAccessed()
        {
            var redisStore = new RedisStore();
            var client     = new HttpClient(new CachingHandler(redisStore)
            {
                InnerHandler = new HttpClientHandler()
            });

            var httpResponseMessage    = client.GetAsync(CacheableResource1).Result;
            CacheItemMetadata metadata = redisStore.GetEarliestAccessedItem("ajax.googleapis.com");

            Assert.IsNotNull(metadata);
            Assert.AreEqual("ajax.googleapis.com", metadata.Domain);
            Assert.Less(DateTime.Now.Subtract(TimeSpan.FromSeconds(10)), metadata.LastAccessed);
        }
Exemple #2
0
        public CacheItemMetadata GetEarliestAccessedItem()
        {
            var cacheItemMetadata = new CacheItemMetadata();
            var item = _connection.SortedSets.Range(_databaseId,
                                                    KeyNames.EarliestAccessed, 0, 0).Result; // TODO!! refactor to do proper async

            if (item.Length == 0)
            {
                return(null);
            }
            cacheItemMetadata.Key = item[0].Key;
            var results = _connection.Hashes.GetValues(_databaseId, item[0].Key.ToBase64()).Result;             // TODO!! refactor to do proper async

            cacheItemMetadata.Size         = BitConverter.ToInt64(results[1], 0);
            cacheItemMetadata.LastAccessed = DateTime.Now;             // TODO: this value is not really required. Decide whether deleted
            cacheItemMetadata.Domain       = Encoding.UTF8.GetString(results[2]);
            return(cacheItemMetadata);
        }
Exemple #3
0
        private bool TryRemove(CacheItemMetadata metadata, bool tellQuotaManager)
        {
            var fileName = metadata.EnsureFolderAndGetFileName(_dataRoot);

            if (File.Exists(fileName))
            {
                File.Delete(fileName);
                TraceWriter.WriteLine("After delete file {0}", TraceLevel.Verbose, fileName);

                _database.Cache.DeleteByHash(Convert.ToBase64String(metadata.Key));

                TraceWriter.WriteLine("After db update. File name: {0}", TraceLevel.Verbose, fileName);

                if (tellQuotaManager)
                {
                    _quotaManager.ItemRemoved(metadata);
                }
                return(true);
            }

            return(false);
        }
Exemple #4
0
        public CacheItemMetadata GetEarliestAccessedItem()
        {
            var cacheItemMetadata = new CacheItemMetadata();
            var item = _connection.SortedSets.Range(_databaseId,
                KeyNames.EarliestAccessed, 0, 0).Result; // TODO!! refactor to do proper async

            if (item.Length == 0)
                return null;
            cacheItemMetadata.Key = item[0].Key;
            var results = _connection.Hashes.GetValues(_databaseId, item[0].Key.ToBase64()).Result; // TODO!! refactor to do proper async
            cacheItemMetadata.Size = BitConverter.ToInt64(results[1], 0);
            cacheItemMetadata.LastAccessed = DateTime.Now; // TODO: this value is not really required. Decide whether deleted
            cacheItemMetadata.Domain = Encoding.UTF8.GetString(results[2]);
            return cacheItemMetadata;
        }
Exemple #5
0
 private void RemoveWithoutTellingQuotaManager(CacheItemMetadata metadata)
 {
     TryRemove(metadata, false);
 }
Exemple #6
0
		private bool TryRemove(CacheItemMetadata metadata, bool tellQuotaManager)
		{


			var fileName = metadata.EnsureFolderAndGetFileName(_dataRoot);
			if (File.Exists(fileName))
			{
				File.Delete(fileName);
				TraceWriter.WriteLine("After delete file {0}", TraceLevel.Verbose, fileName);

				_database.Cache.DeleteByHash(Convert.ToBase64String(metadata.Key));

				TraceWriter.WriteLine("After db update. File name: {0}", TraceLevel.Verbose, fileName);

				if (tellQuotaManager)
					_quotaManager.ItemRemoved(metadata);
				return true;

			}

			return false;

		}
Exemple #7
0
		private void RemoveWithoutTellingQuotaManager(CacheItemMetadata metadata)
		{
			TryRemove(metadata, false);
		}
 public static string EnsureFolderAndGetFileName(this CacheItemMetadata metadata, string dataRoot)
 {
     return(EnsureFolderAndGetFileName(metadata.Domain, metadata.Key, dataRoot));
 }