public DefaultShardResolutionStrategy(IEnumerable<string> shardIds, ShardStrategy shardStrategy) { this.shardStrategy = shardStrategy; ShardIds = new List<string>(shardIds); if (ShardIds.Count == 0) throw new ArgumentException("shardIds must have at least one value", "shardIds"); }
public DefaultShardResolutionStrategy(IEnumerable <string> shardIds, ShardStrategy shardStrategy) { this.shardStrategy = shardStrategy; ShardIds = new List <string>(shardIds); if (ShardIds.Count == 0) { throw new ArgumentException("shardIds must have at least one value", "shardIds"); } }
public AsyncShardedFilesServerClient(ShardStrategy strategy) { Strategy = strategy; Clients = strategy.Shards; }
public AsyncShardedFilesServerClient(ShardStrategy strategy) { Strategy = strategy; Clients = strategy.Shards; }
public async Task ShouldWork() { var client1 = NewAsyncClient(0, fileSystemName: "shard1"); var client2 = NewAsyncClient(1, fileSystemName: "shard2"); var shards = new Dictionary<string, IAsyncFilesCommands> { {"Europe", client1}, {"Asia", client2}, }; var strategy = new ShardStrategy(shards); strategy.ShardResolutionStrategy = new RegionMetadataBasedResolutionStrategy(shards.Keys.ToList(), strategy.ModifyFileName, strategy.Conventions); var client = new AsyncShardedFilesServerClient(strategy); var fileName = await client.UploadAsync("test1", new RavenJObject() { { "Region", "Europe" } }, new MemoryStream()); Assert.Equal("/Europe/test1", fileName); fileName = await client.UploadAsync("test2", new RavenJObject() { { "region", "asia" } }, new MemoryStream()); Assert.Equal("/Asia/test2", fileName); }
public RegionMetadataBasedResolutionStrategy(IList<string> shardIds, ShardStrategy.ModifyFileNameFunc modifyFileName, FilesConvention conventions) { this.shardIds = shardIds; this.modifyFileName = modifyFileName; this.conventions = conventions; }
public static void CreateStore() { var shards = new Dictionary<string, IAsyncFilesCommands> { {"Italia", new AsyncFilesServerClient("http://10.211.55.3:8080", "fsItalia")}, {"Francia", new AsyncFilesServerClient("http://10.211.55.3:8080", "fsFrancia")}, {"Polonia", new AsyncFilesServerClient("http://10.211.55.3:8080", "fsPolonia")} }; FileStore.ShardStrategy = new ShardStrategy(shards); FileStore.ShardStrategy.ModifyFileName = (convention, shardId, filename) => shardId + convention.IdentityPartsSeparator + filename; FileStore.ShardStrategy.ShardResolutionStrategy = new CountryResolutionStrategy(shards.Keys.ToList(), FileStore.ShardStrategy.ModifyFileName, FileStore.ShardStrategy.Conventions); }
public CountryResolutionStrategy(IList<string> shardIds, ShardStrategy.ModifyFileNameFunc modifyFileName, FilesConvention conventions) { this.shardIds = shardIds; this.modifyFileName = modifyFileName; this.conventions = conventions; }