/// <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); }
private void Cache(AzureShardlet azureShardlet) { if (azureShardlet == null) { return; } AzureCache.Put(GetCacheKey(_cacheType, azureShardlet), azureShardlet.ToCacheShardlet()); }
/// <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); } }
/// <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)); }