/// <summary> /// Discovers the and serialize. /// </summary> /// <param name="stream">The stream.</param> /// <param name="obj">The object.</param> /// <param name="objectType">Type of the object.</param> /// <exception cref="System.ArgumentNullException">The <paramref name="stream"/> is <c>null</c>.</exception> /// <exception cref="System.ArgumentNullException">The <paramref name="obj"/> is <c>null</c>.</exception> /// <exception cref="System.ArgumentNullException">The <paramref name="objectType"/> is <c>null</c>.</exception> public static void DiscoverAndSerialize(Stream stream, object obj, Type objectType) { Argument.IsNotNull("stream", stream); Argument.IsNotNull("obj", obj); Argument.IsNotNull("objectType", objectType); lock (Cache) { IObjectMetaData objectMetaData; if (Cache.Contains(objectType.FullName)) { objectMetaData = Cache[objectType.FullName]; } else { objectMetaData = new ObjectMetaData(); DiscoverTypeInfo(objectType, objectMetaData); Cache.Add(objectType.FullName, objectMetaData); } Serialize(stream, obj, objectMetaData); } }
private void Set <T>(string key, T tvalue, int duration) { GXLogging.Debug(log, "Set<T> key:", () => key + " value " + tvalue + " valuetype:" + tvalue.GetType()); if (key != null) { SlidingTime expiration = null; if (duration > 0) { expiration = new SlidingTime(new TimeSpan(TimeSpan.TicksPerMinute * duration)); } if (Preferences.Instrumented) { wmicache.Add(new WMICacheItem(key, expiration, tvalue)); } cacheStorage.Add(key, tvalue); AddMetadata(key, expiration); } }
public IResult <IReadOnlyCollection <Commercial> > GetCommercials() { IReadOnlyCollection <Commercial> commercials = _cacheStorage.Get <IReadOnlyCollection <Commercial> >(CACHE_KEY); if (commercials == null) { var commercialResult = _commercialProvider.GetCommercials(); if (commercialResult.IsSuccess()) { commercials = commercialResult.GetSuccessResult(); _cacheStorage.Add(CACHE_KEY, commercials, CACHE_MINUTES); } else { return(new NoneResult <IReadOnlyCollection <Commercial> >()); } } return(new SuccessResult <IReadOnlyCollection <Commercial> >(commercials)); }
/// <summary> /// Método interno acionado para adicionar um novo item. /// </summary> /// <param name="key">Chave do item.</param> /// <param name="cacheEntry">Instancia da entrada que está sendo adicionada.</param> /// <param name="isUserOperation">True se for uma operação do usuário.</param> /// <returns>Resultado da operação.</returns> internal override CacheAddResult AddInternal(object key, CacheEntry cacheEntry, bool isUserOperation) { if (_cacheStore == null) { throw new InvalidOperationException(); } if (_evictionPolicy != null) { if (cacheEntry.EvictionHint is PriorityEvictionHint) { cacheEntry.Priority = ((PriorityEvictionHint)cacheEntry.EvictionHint).Priority; } cacheEntry.EvictionHint = _evictionPolicy.CompatibleHint(cacheEntry.EvictionHint); } StoreAddResult result = _cacheStore.Add(key, cacheEntry); if ((result == StoreAddResult.Success || result == StoreAddResult.SuccessNearEviction) && (_evictionPolicy != null)) { _evictionPolicy.Notify(key, null, cacheEntry.EvictionHint); } switch (result) { case StoreAddResult.Success: return(CacheAddResult.Success); case StoreAddResult.KeyExists: return(CacheAddResult.KeyExists); case StoreAddResult.NotEnoughSpace: return(CacheAddResult.NeedsEviction); case StoreAddResult.SuccessNearEviction: return(CacheAddResult.SuccessNearEviction); } return(CacheAddResult.Failure); }
/// <summary> /// 添加缓存 /// </summary> /// <param name="key"></param> /// <param name="obj"></param> public static void Add(String key, Object obj) { cacheInstance.Add(key, obj); }
/// <summary> /// Adds a pair of key and value to the cache. Throws an exception or reports error /// if the specified key already exists in the cache. /// </summary> /// <param name="key">key of the entry.</param> /// <param name="cacheEntry">the cache entry.</param> /// <returns>returns the result of operation.</returns> internal override CacheAddResult AddInternal(object key, CacheEntry cacheEntry, bool isUserOperation, OperationContext operationContext) { if (ServerMonitor.MonitorActivity) { ServerMonitor.LogClientActivity("LocalCache.Add_1", ""); } if (_cacheStore == null) { throw new InvalidOperationException(); } if (_evictionPolicy != null) { if (cacheEntry.EvictionHint is PriorityEvictionHint) { cacheEntry.Priority = ((PriorityEvictionHint)cacheEntry.EvictionHint).Priority; } cacheEntry.EvictionHint = _evictionPolicy.CompatibleHint(cacheEntry.EvictionHint); } //No Need to insert Eviction if Eviction is turned off it will reduce cache-entry overhead if (_evictionPolicy == null) { cacheEntry.EvictionHint = null; } StoreAddResult result = _cacheStore.Add(key, cacheEntry, !isUserOperation); // Operation completed! if (result == StoreAddResult.Success || result == StoreAddResult.SuccessNearEviction) { if (_evictionPolicy != null) { _evictionPolicy.Notify(key, null, cacheEntry.EvictionHint); } } if (result == StoreAddResult.NotEnoughSpace && !_notifyCacheFull) { _notifyCacheFull = true; _context.NCacheLog.Error("LocalCache.AddInternal", "The cache is full and not enough items could be evicted."); } if (_context.PerfStatsColl != null) { if (_evictionPolicy != null) { _context.PerfStatsColl.SetEvictionIndexSize((long)_evictionPolicy.IndexInMemorySize); } if (_context.ExpiryMgr != null) { _context.PerfStatsColl.SetExpirationIndexSize((long)_context.ExpiryMgr.IndexInMemorySize); } } switch (result) { case StoreAddResult.Success: return(CacheAddResult.Success); case StoreAddResult.KeyExists: return(CacheAddResult.KeyExists); case StoreAddResult.NotEnoughSpace: return(CacheAddResult.NeedsEviction); case StoreAddResult.SuccessNearEviction: return(CacheAddResult.SuccessNearEviction); } return(CacheAddResult.Failure); }