public ClusterProvider(ClusteringOption option, WorkingMode workingMode, IClusterItemExecuteLogger logger) { this.option = option; clusters = new List <ICluster>(); switch (workingMode) { case WorkingMode.Async: for (var i = 0; i < option.MaxConcurrentCluster; i++) { var createOption = option.ClusterCreationOptionFactory.Create(i); var cluster = new AsyncCluster(i, createOption.Title, createOption.ItemProcessorFactory.Create(i), logger, option.MaxItemInQueue); clusters.Add(cluster); } break; case WorkingMode.Sync: for (var i = 0; i < option.MaxConcurrentCluster; i++) { var createOption = option.ClusterCreationOptionFactory.Create(i); var cluster = new SyncCluster(i, createOption.Title, createOption.ItemProcessorFactory.Create(i), logger, option.MaxItemInQueue); clusters.Add(cluster); } break; default: throw new ArgumentOutOfRangeException(); } }
private void Setup(FakeLogger logger, int concurrentClusterCount = 3, int mode = 0) { if (!Directory.Exists("test\\AsyncClusterTest\\")) { Directory.CreateDirectory("test\\AsyncClusterTest\\"); } for (var i = 0; i < 10; i++) { if (File.Exists($"test\\AsyncClusterTest\\test{i}.dat")) { File.Delete($"test\\AsyncClusterTest\\test{i}.dat"); } } fakeProcessorFactory = new FakeProcessorFactory(mode); var clusterOptionCreator = new DefaultClusterOptionCreator(fakeProcessorFactory); var clusterSelector = new DefaultClusterSelector(); option = new ClusteringOption(concurrentClusterCount, clusterOptionCreator, clusterSelector); asyncClusterManager = new AsyncClusterManager(option, logger); }
public AsyncClusterManager(ClusteringOption option, IClusterItemExecuteLogger logger) { this.option = option; clusterProvider = new ClusterProvider(option, WorkingMode.Async, logger); }