Exemple #1
0
        /// <summary>
        /// Merges the specified azure shardlet.
        /// </summary>
        /// <param name="azureShardlet">The azure shardlet.</param>
        public void Merge(AzureShardlet azureShardlet)
        {
            RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy()
            .ExecuteAction(() => _table.Execute(TableOperation.Merge(azureShardlet)));

            Cache(azureShardlet);
        }
Exemple #2
0
        private void Cache(AzureShardlet azureShardlet)
        {
            if (azureShardlet == null)
            {
                return;
            }

            AzureCache.Put(GetCacheKey(_cacheType, azureShardlet), azureShardlet.ToCacheShardlet());
        }
Exemple #3
0
        /// <summary>
        /// Saves the azure Shardlet.
        /// </summary>
        /// <param name="shardlet">The shardlet.</param>
        private void SaveAzureShardlet(Shardlet shardlet)
        {
            var shardSetName       = shardlet.ShardSetName;
            var distributionKey    = shardlet.DistributionKey;
            var shardingKey        = shardlet.ShardingKey;
            var status             = shardlet.Status;
            var serverInstanceName = shardlet.ServerInstanceName;
            var catalog            = shardlet.Catalog;
            var pinned             = shardlet.Pinned;

            var repository    = new AzureShardletMapRepository(shardSetName);
            var azureShardlet = repository.Get(distributionKey);

            if (azureShardlet == null)
            {
                azureShardlet =
                    new AzureShardlet
                {
                    ShardSetName       = shardSetName,
                    DistributionKey    = distributionKey,
                    ShardingKey        = shardingKey,
                    ServerInstanceName = serverInstanceName,
                    Catalog            = catalog,
                    Status             = status.ToString(),
                    Pinned             = pinned
                };

                repository.Insert(azureShardlet);
            }
            else
            {
                azureShardlet.Catalog            = catalog;
                azureShardlet.ServerInstanceName = serverInstanceName;
                azureShardlet.Status             = status.ToString();
                azureShardlet.Pinned             = pinned;

                repository.Merge(azureShardlet);
            }
        }
Exemple #4
0
        /// <summary>
        /// Deletes the specified azure shardlet.
        /// </summary>
        /// <param name="azureShardlet">The azure shardlet.</param>
        public void Delete(AzureShardlet azureShardlet)
        {
            _table.Execute(TableOperation.Delete(azureShardlet));

            AzureCache.Remove(GetCacheKey(_cacheType, azureShardlet));
        }