Example #1
0
        private IReconstructionProcessor StartPipeline(IFileMonitor fileMonitor, PermStorageFolderStructure folderStructure)
        {
            BlockingCollection <TempProjectionInfo> queue1 = new BlockingCollection <TempProjectionInfo>();
            BlockingCollection <PermProjectionInfo> queue2 = new BlockingCollection <PermProjectionInfo>();

            var eventHandler = _projectionPipelineFactory.CreateFileMonitorListener(folderStructure, queue1);

            fileMonitor.Created  += eventHandler.OnNewFileDetected;
            fileMonitor.Finished += eventHandler.OnMonitorFinished;

            var copier = _projectionPipelineFactory.CreateProjectionCopier(queue1, queue2, folderStructure);

            TaskWatcher.AddTask(copier.StartCopyingFiles());

            var reconstructionProcessor = _projectionPipelineFactory.CreateReconstructionProcessor(queue2, folderStructure);

            TaskWatcher.AddTask(reconstructionProcessor.StartConsumingProjections());
            return(reconstructionProcessor);
        }