public void SetUp() { _wikiArticle = Substitute.For <IWikiArticle>(); _banlistDataQueue = Substitute.For <IBanlistDataQueue>(); _sut = new BanlistProcessor(_wikiArticle, _banlistDataQueue, Substitute.For <ILogger <BanlistProcessor> >()); }
public ArticleDataFlow(IBanlistProcessor banlistProcessor, IBanlistDataQueue banlistDataQueue) { _jobs = new ConcurrentDictionary <Guid, TaskCompletionSource <ArticleCompletion> >(); // Data flow options var maxDegreeOfParallelism = Environment.ProcessorCount; var nonGreedy = new ExecutionDataflowBlockOptions { BoundedCapacity = maxDegreeOfParallelism, MaxDegreeOfParallelism = maxDegreeOfParallelism }; // Pipeline members _articleBufferBlock = new BufferBlock <Article>(); var banlistProcessorTransformBlock = new TransformBlock <Article, ArticleProcessed>(article => banlistProcessor.Process(article), nonGreedy); var publishBanlistTransformBlock = new TransformBlock <ArticleProcessed, YugiohBanlistCompletion>(articleProcessed => banlistDataQueue.Publish(articleProcessed), nonGreedy); var publishToQueueActionBlock = new ActionBlock <YugiohBanlistCompletion>(yugiohCardCompletion => FinishedProcessing(yugiohCardCompletion)); // Form the pipeline _articleBufferBlock.LinkTo(banlistProcessorTransformBlock); banlistProcessorTransformBlock.LinkTo(publishBanlistTransformBlock); publishBanlistTransformBlock.LinkTo(publishToQueueActionBlock); }
public void SetUp() { _banlistProcessor = Substitute.For <IBanlistProcessor>(); _banlistDataQueue = Substitute.For <IBanlistDataQueue>(); _sut = new ArticleDataFlow(_banlistProcessor, _banlistDataQueue); }
public BanlistProcessor(IWikiArticle wikiArticle, IBanlistDataQueue banlistDataQueue, ILogger <BanlistProcessor> logger) { _wikiArticle = wikiArticle; _banlistDataQueue = banlistDataQueue; _logger = logger; }