Esempio n. 1
0
        /// <summary>
        /// Retrieve an item
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="result"></param>
        public bool Get <T>(string key, out SimpleStoreItem <T> result)
        {
            result = null;

            var storeFilePath = new FileInfo(this.GetDestinationPath(key));

            if (!storeFilePath.Exists)
            {
                return(false);
            }

            var contents = File.ReadAllText(storeFilePath.FullName, Encoding.UTF8);

            var restored = JsonConvert.DeserializeObject <SimpleStoreItem <T> >(contents);

            if (restored.Ttl > 0 && restored.Created.AddMinutes(restored.Ttl) < DateTime.UtcNow)
            {
                File.Delete(storeFilePath.FullName);
                return(false);
            }

            restored.StorePath = storeFilePath.FullName;
            result             = restored;
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Store an item
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="data"></param>
        /// <param name="ttl">Time to live for the item in minutes. Default to 0 - no expiration.</param>
        public void Set <T>(string key, T data, int ttl = 0)
        {
            var cacheItem = new SimpleStoreItem <T>();

            cacheItem.Created   = DateTime.UtcNow;
            cacheItem.Ttl       = ttl;
            cacheItem.Data      = data;
            cacheItem.Key       = key;
            cacheItem.StorePath = this.GetDestinationPath(key);

            string serialized = JsonConvert.SerializeObject(cacheItem, Formatting.Indented);

            File.WriteAllText(cacheItem.StorePath, serialized, Encoding.UTF8);
        }