コード例 #1
0
 private static T CreateData <T>(string @namespace, ServiceCacheRegistration registration, object tag, object[] values, out CacheItemHeader header)
 {
     if (@namespace != null)
     {
         var namespaces = registration.Namespaces;
         if (!namespaces.Contains(@namespace))
         {
             namespaces.Add(@namespace);
         }
     }
     header = new CacheItemHeader {
         Values = values,
     };
     return((T)registration.Builder(tag, values));
 }
コード例 #2
0
        private static void SetUsingCas(IDistributedServiceCache cache, ServiceCacheRegistration registration, object tag, CacheItemHeader header, bool useDBNull, object value)
        {
            var valueAsCache = (!useDBNull || value != null ? (object)value : DBNull.Value);

            cache.Add(tag, header.Item, registration.ItemPolicy, valueAsCache, new ServiceCacheByDispatcher(registration, header.Values, header));
        }
コード例 #3
0
 private static void SetUsingRwLock(IServiceCache cache, ServiceCacheRegistration registration, object tag, CacheItemPolicy itemPolicy, CacheItemHeader header, bool useDBNull, object value)
 {
     _rwLock.EnterWriteLock();
     try
     {
         var valueAsCache = (!useDBNull || value != null ? (object)value : DBNull.Value);
         cache.Add(tag, header.Item, itemPolicy, valueAsCache, new ServiceCacheByDispatcher(registration, header.Values, header));
     }
     finally { _rwLock.ExitWriteLock(); }
 }
コード例 #4
0
 private object InvokeInternal <T>(IServiceCache cache, object tag, CacheItemHeader header)
 {
     return(ActionInvoke <T>(Message, tag, header.Values, () => (T)cache.Get(null, header.Item)));
 }
コード例 #5
0
 /// <summary>
 /// Invokes the specified cache.
 /// </summary>
 /// <param name="cache">The cache.</param>
 /// <param name="tag">The tag.</param>
 /// <param name="header">The header.</param>
 /// <returns></returns>
 public object Invoke(IServiceCache cache, object tag, CacheItemHeader header)
 {
     return(_invokeInternalInfo.MakeGenericMethod(Action.TType).Invoke(this, new[] { cache, tag, header }));
 }
コード例 #6
0
 /// <summary>
 /// Gets the specified tag.
 /// </summary>
 /// <param name="tag">The tag.</param>
 /// <param name="name">The name.</param>
 /// <param name="registration">The registration.</param>
 /// <param name="header">The header.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentNullException"></exception>
 public object Get(object tag, string name, IServiceCacheRegistration registration, out CacheItemHeader header)
 {
     if (registration == null)
         throw new ArgumentNullException("registration");
     var version = (tag as DataCacheItemVersion);
     string regionName;
     if (!registration.UseHeaders)
         header = null;
     else if (version == null)
         header = (CacheItemHeader)(!Settings.TryGetRegion(ref name, out regionName) ? Cache.Get(name + "#") : Cache.Get(name + "#", regionName));
     else
         header = (CacheItemHeader)(!Settings.TryGetRegion(ref name, out regionName) ? Cache.GetIfNewer(name + "#", ref version) : Cache.GetIfNewer(name + "#", ref version, regionName));
     if (version == null)
         return (!Settings.TryGetRegion(ref name, out regionName) ? Cache.Get(name) : Cache.Get(name, regionName));
     return (!Settings.TryGetRegion(ref name, out regionName) ? Cache.GetIfNewer(name, ref version) : Cache.GetIfNewer(name, ref version, regionName));
 }
コード例 #7
0
 /// <summary>
 /// Gets the specified tag.
 /// </summary>
 /// <param name="tag">The tag.</param>
 /// <param name="name">The name.</param>
 /// <param name="registration">The registration.</param>
 /// <param name="header">The header.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentNullException"></exception>
 public object Get(object tag, string name, IServiceCacheRegistration registration, out CacheItemHeader header)
 {
     if (registration == null)
         throw new ArgumentNullException("registration");
     header = (registration.UseHeaders ? (CacheItemHeader)Cache.Get(name + "#") : null);
     return Cache.Get(name);
 }
コード例 #8
0
 /// <summary>
 /// Gets the specified tag.
 /// </summary>
 /// <param name="tag">The tag.</param>
 /// <param name="name">The name.</param>
 /// <param name="registration">The registration.</param>
 /// <param name="header">The header.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentNullException"></exception>
 public object Get(object tag, string name, IServiceCacheRegistration registration, out CacheItemHeader header)
 {
     if (registration == null)
         throw new ArgumentNullException("registration");
     throw new NotImplementedException();
 }
 public object Get(object tag, string name, IServiceCacheRegistration registration, out CacheItemHeader header)
 {
     return(_parent.Get(tag, _namespace + name, registration, out header));
 }