Example #1
0
        public async Task BeforeAll()
        {
            _batcher = TakeAnItem <int>
                       .Then(CreateFile)
                       .WithThreads(CreateFileThreads)
                       .Then(MoveFile)
                       .WithThreads(MoveFileThreads)
                       .AndFinally(MungeFile)
                       .WithThreads(MungeFileThreads);

            _batcher.Process(1.To(NumberOfFiles));

            var logNext = 0;

            while (true)
            {
                var count = Moved.Pipe(Directory.GetFiles).Pipe(f => f.Length);
                if (count >= logNext)
                {
                    Console.WriteLine($"{count} files moved");
                    logNext += NumberOfFiles / 10;
                }
                if (count >= NumberOfFiles)
                {
                    break;
                }
                await Task.Delay(100);
            }
            Console.WriteLine("**** Files moved ****");
            logNext = 0;
            while (true)
            {
                var count = Munged.Pipe(Directory.GetFiles).Pipe(f => f.Length);
                if (count >= logNext)
                {
                    Console.WriteLine($"{count} files munged");
                    logNext += NumberOfFiles / 10;
                }
                if (count >= NumberOfFiles)
                {
                    break;
                }
                await Task.Delay(100);
            }
            Console.WriteLine("**** Files munged ****");
            _results = 1.To(NumberOfFiles)
                       .Select(GetFilename)
                       .Select(f => Path.Combine(Munged, f))
                       .Select(File.ReadAllText)
                       .Select(JsonConvert.DeserializeObject <List <TaskMetadata> >)
                       .ToList();
        }