Beispiel #1
0
        private DataflowPipeline ConstructPipeline(string storageName)
        {
            // Input component work.
            InputtersFlow inputtersFlow = InputManagerAsync.CreateFlow(storageName);

            // Crawlers component work.
            CrawlersFlow crawlersFlow = CrawlersManagerAsync.CreateFlow();

            // Appraisers component work.
            AppraisersFlow appraisersFlow = AppraisersManagerAsync.CreateFlow();

            // Output component work.
            OutputtersFlow outputtersFlow =
                OutputManagerAsync.CreateFlow(storageName: string.Empty);

            // Constructing pipeline.
            inputtersFlow.LinkTo(crawlersFlow);
            crawlersFlow.LinkTo(appraisersFlow);
            appraisersFlow.LinkTo(outputtersFlow);

            return(new DataflowPipeline(inputtersFlow, outputtersFlow));
        }
Beispiel #2
0
        public InputtersFlow CreateFlow(string storageName)
        {
            if (string.IsNullOrWhiteSpace(storageName))
            {
                storageName = _defaultStorageName;

                const string message = "Storage name is empty, using the default value.";
                _logger.Info(message);
                GlobalMessageHandler.OutputMessage(message);
            }

            var inputtersFunc = _inputtersAsync.Select(inputterAsync =>
                                                       new Func <string, IEnumerable <string> >(
                                                           input => TryReadThingNames(inputterAsync, input)
                                                           )
                                                       );

            var inputtersFlow = new InputtersFlow(inputtersFunc);

            _logger.Info($"Conctructed inputters pipeline for \"{storageName}\".");
            return(inputtersFlow);
        }