コード例 #1
0
            /// <summary>
            /// Save the specified value back to the disk.
            /// </summary>
            /// <param name="uniqueName"></param>
            /// <param name="data"></param>
            /// <param name="updatedTime"></param>
            /// <param name="expirationTime"></param>
            /// <param name="isOptimized"></param>
            public void Save(string uniqueName, byte[] data, DateTime updatedTime, DateTime expirationTime, bool isOptimized)
            {
                if (data == null)
                {
                    throw new ArgumentNullException("data");
                }

                _cacheItemInfo             = new CacheItemInfo(uniqueName, updatedTime, expirationTime);
                _cacheItemInfo.IsOptimized = isOptimized;
                Data      = null;
                LoadState = DataLoadState.None;

                Debug.WriteLine("Writing cache for {0} (ID={3}), IsOptimized={1}, Will expire {2}", CacheEntry.ObjectType.Name, _cacheItemInfo.IsOptimized, _cacheItemInfo.ExpirationTime, CacheEntry.LoadContext.Identity.ToString());
                DataManager.StoreProvider.Write(_cacheItemInfo, data);
            }
コード例 #2
0
            /// <summary>
            /// Look in the store for a recent entry that we can load from.
            /// </summary>
            /// <returns></returns>
            private bool FindCacheItem()
            {
                lock (this)
                {
                    if (_cacheItemInfo == null && !_thereIsNoCacheItem)
                    {
                        _cacheItemInfo = DataManager.StoreProvider.GetLastestExpiringItem(CacheEntry.UniqueName);
                    }

                    if (_cacheItemInfo == null)
                    {
                        // flat failure.
                        if (!_thereIsNoCacheItem)
                        {
                            _thereIsNoCacheItem = true;
                            Debug.WriteLine("No cache found for {0} (ID={1})", CacheEntry.ObjectType, CacheEntry.LoadContext.Identity);
                        }
                        return(false);
                    }
                    return(true);
                }
            }
コード例 #3
0
 public override void Reset()
 {
     base.Reset();
     _cacheItemInfo      = null;
     _thereIsNoCacheItem = false;
 }
コード例 #4
0
ファイル: CacheEntry.cs プロジェクト: jeffwilcox/AgFx
            /// <summary>
            /// Save the specified value back to the disk.
            /// </summary>
            /// <param name="uniqueName"></param>
            /// <param name="data"></param>
            /// <param name="updatedTime"></param>
            /// <param name="expirationTime"></param>
            /// <param name="isOptimized"></param>
            public void Save(string uniqueName, byte[] data, DateTime updatedTime, DateTime expirationTime, bool isOptimized)
            {
                if (data == null)
                {
                    throw new ArgumentNullException("data");
                }

                _cacheItemInfo = new CacheItemInfo(uniqueName, updatedTime, expirationTime);
                _cacheItemInfo.IsOptimized = isOptimized;
                Data = null;
                LoadState = DataLoadState.None;

                Debug.WriteLine("Writing cache for {0} (ID={3}), IsOptimized={1}, Will expire {2}", CacheEntry.ObjectType.Name, _cacheItemInfo.IsOptimized, _cacheItemInfo.ExpirationTime, CacheEntry.LoadContext.Identity.ToString() );
                DataManager.StoreProvider.Write(_cacheItemInfo, data);
            }
コード例 #5
0
ファイル: CacheEntry.cs プロジェクト: jeffwilcox/AgFx
            /// <summary>
            /// Look in the store for a recent entry that we can load from.
            /// </summary>
            /// <returns></returns>
            private bool FindCacheItem()
            {
                lock (this)
                {
                    if (_cacheItemInfo == null && !_thereIsNoCacheItem)
                    {
                        _cacheItemInfo = DataManager.StoreProvider.GetLastestExpiringItem(CacheEntry.UniqueName);
                    }

                    if (_cacheItemInfo == null)
                    {
                        // flat failure.
                        if (!_thereIsNoCacheItem)
                        {
                            _thereIsNoCacheItem = true;
                            Debug.WriteLine("No cache found for {0} (ID={1})", CacheEntry.ObjectType, CacheEntry.LoadContext.Identity);
                        }
                        return false;
                    }
                    return true;
                }
            }
コード例 #6
0
ファイル: StoreProviderBase.cs プロジェクト: sawilde/AgFx
 /// <summary>
 /// Delete's the given item from the store.
 /// </summary>
 /// <param name="item">The item to delete</param>
 public abstract void Delete(CacheItemInfo item);
コード例 #7
0
ファイル: CacheEntry.cs プロジェクト: jeffwilcox/AgFx
 public override void Reset()
 {
     base.Reset();
     _cacheItemInfo = null;
     _thereIsNoCacheItem = false;
 }
コード例 #8
0
ファイル: StoreProviderBase.cs プロジェクト: sawilde/AgFx
 /// <summary>
 /// Update an items details in the store
 /// </summary>
 /// <param name="oldInfo">The old cache entry</param>
 /// <param name="newInfo">The new cache entry</param>
 public virtual void Update(CacheItemInfo oldInfo, CacheItemInfo newInfo)
 {
     throw new NotImplementedException("");
 }
コード例 #9
0
ファイル: StoreProviderBase.cs プロジェクト: sawilde/AgFx
 /// <summary>
 /// Write the item's data to the store.
 /// </summary>
 /// <param name="info"></param>
 /// <param name="data"></param>
 public abstract void Write(CacheItemInfo info, byte[] data);
コード例 #10
0
ファイル: StoreProviderBase.cs プロジェクト: sawilde/AgFx
 /// <summary>
 /// Read the data for the given item.
 /// </summary>
 /// <param name="item">The info describing the item to read</param>
 /// <returns>The data in the store for the specified item.</returns>
 public abstract byte[] Read(CacheItemInfo item);
コード例 #11
0
 /// <summary>
 /// Delete's the given item from the store.
 /// </summary>
 /// <param name="item">The item to delete</param>
 public abstract void Delete(CacheItemInfo item);
コード例 #12
0
 /// <summary>
 /// Write the item's data to the store.
 /// </summary>
 /// <param name="info"></param>
 /// <param name="data"></param>
 public abstract void Write(CacheItemInfo info, byte[] data);
コード例 #13
0
 /// <summary>
 /// Read the data for the given item.
 /// </summary>
 /// <param name="item">The info describing the item to read</param>
 /// <returns>The data in the store for the specified item.</returns>
 public abstract byte[] Read(CacheItemInfo item);
コード例 #14
0
ファイル: CacheEntry.cs プロジェクト: sawilde/AgFx
            internal void OnLoadNotModified()
            {
                var origCacheItemInfo = DataManager.StoreProvider.GetLastestExpiringItem(CacheEntry.UniqueName);
                var newCacheItemInfo = new CacheItemInfo(origCacheItemInfo.UniqueName)
                                           {
                                               ETag = origCacheItemInfo.ETag,
                                               ExpirationTime = DateTime.Now.Add(CacheEntry.CacheTime), // update with new expiry time
                                               IsOptimized = origCacheItemInfo.IsOptimized,
                                               UpdatedTime = origCacheItemInfo.UpdatedTime
                                           };

                DataManager.StoreProvider.Update(origCacheItemInfo, newCacheItemInfo);
            }