public IShardStrategy NewShardStrategy(IEnumerable<ShardId> shardIds)
 {
     var loadBalancer = new RoundRobinShardLoadBalancer(shardIds);
     var pss = new RoundRobinShardSelectionStrategy(loadBalancer);
     IShardResolutionStrategy prs = new AllShardsShardResolutionStrategy(shardIds);
     IShardAccessStrategy pas = new SequentialShardAccessStrategy();
     return new ShardStrategyImpl(pss, prs, pas);
 }
示例#2
0
        public IShardStrategy NewShardStrategy(IEnumerable <ShardId> shardIds)
        {
            var loadBalancer             = new RoundRobinShardLoadBalancer(shardIds);
            var pss                      = new FirmShardSelectionStrategy(loadBalancer);
            IShardResolutionStrategy prs = new AllShardsShardResolutionStrategy(shardIds);
            IShardAccessStrategy     pas = new SequentialShardAccessStrategy();

            return(new ShardStrategyImpl(pss, prs, pas));
        }
示例#3
0
        public ShardStrategy(IDictionary<string, IAsyncFilesCommands> shards)
		{
			if (shards == null) throw new ArgumentNullException("shards");
			if (shards.Count == 0)
				throw new ArgumentException("Shards collection must have at least one item", "shards");

            this.shards = new Dictionary<string, IAsyncFilesCommands>(shards, StringComparer.OrdinalIgnoreCase);


			Conventions = shards.First().Value.Conventions.Clone();

			ShardAccessStrategy = new SequentialShardAccessStrategy();
			ShardResolutionStrategy = new DefaultShardResolutionStrategy(shards.Keys, this);
			ModifyFileName = (convention, shardId, documentId) => convention.IdentityPartsSeparator + shardId + convention.IdentityPartsSeparator + documentId;
		}
示例#4
0
		public ShardStrategy()
		{
			ShardAccessStrategy = new SequentialShardAccessStrategy();
		}