Пример #1
0
        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();
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 public AsyncClusterManager(ClusteringOption option, IClusterItemExecuteLogger logger)
 {
     this.option     = option;
     clusterProvider = new ClusterProvider(option, WorkingMode.Async, logger);
 }