Esempio n. 1
0
        public async Task <string> GetSasForTable(string tableName, string partitionKey)
        {
            if (String.IsNullOrEmpty(tableName))
            {
                return(null);
            }

            var table = await _azureStorage.GetTableReferenceAsync(tableName);

            if (table == null)
            {
                return(null);
            }

            var sas = table.GetSharedAccessSignature(
                new SharedAccessTablePolicy
            {
                Permissions            = SharedAccessTablePermissions.Query,
                SharedAccessExpiryTime = LvConfiguration.GetExpireTime(LvConfiguration.TokenExpireOffset)
            },
                null,         /* accessPolicyIdentifier */
                partitionKey, /* startPartitionKey */
                null,         /* startRowKey */
                partitionKey, /* endPartitionKey */
                null);        /* endRowKey */

            return(string.Format(CultureInfo.InvariantCulture, "{0}{1}", table.Uri, sas));
        }
Esempio n. 2
0
        public async Task <T> Get <T>(string key, Func <Task <T> > func)
        {
            var value = Get <T>(key);

            if (value != null)
            {
                return(value);
            }

            #region Cache Task

            var      asyncKey = String.Format("{0} {1}", RegionOfAsync, key);
            Task <T> cachedTask, newTask = null;
            lock (_cache)
            {
                cachedTask = _cache.Get(asyncKey) as Task <T>;
                if (cachedTask == null)
                {
                    newTask = func();
                    _cache.Set(asyncKey, newTask,
                               LvConfiguration.GetExpireTime(LvConfiguration.AsyncCacheExpireOffset));
                }
            }
            value = cachedTask != null
                ? await cachedTask.ContinueWith(r => r.Result)
                : newTask != null ? await newTask : await func();

            #endregion

            //value = await func();
            Set(key, value);
            return(value);
        }
Esempio n. 3
0
 public void Set(string key, object value)
 {
     Set(key, value, LvConfiguration.GetExpireTime(LvConfiguration.CacheExpireOffset));
 }