public void Laden(Batch<string> dateipfade) { var dateien = new Batcher<FileInfo>(dateipfade.Elements.Length/5); dateipfade.ForEach(t => { var fi = new FileInfo(t); if (dateien.Add(fi) == BatchStatus.Full) Geladen(dateien.Grab(dateipfade.CorrelationId)); }); if (dateipfade.GetType() == typeof(EndOfStreamBatch<string>)) Geladen(dateien.GrabAsEndOfStream(dateipfade.CorrelationId)); else Geladen(dateien.Grab(dateipfade.CorrelationId)); }
public Batch<Tuple<FileInfo, string>> Abfrage_beimischen(Batch<FileInfo> dateien) { var filteraufträge = new Batcher<Tuple<FileInfo, string>>(dateien.Elements.Length); dateien.ForEach(t => { var suchvorgang = _suchvorgänge[dateien.CorrelationId]; var filterauftrag = new Tuple<FileInfo, string>(t, suchvorgang.Abfrage); filteraufträge.Add(filterauftrag); }); if (dateien.GetType() == typeof(EndOfStreamBatch<FileInfo>)) return filteraufträge.GrabAsEndOfStream(dateien.CorrelationId); return filteraufträge.Grab(dateien.CorrelationId); }
internal void Dateien_enummerieren(string id, string pfad, Batcher<string> batcher) { var dir = new DirectoryInfo(pfad); try { foreach (var file in dir.GetFiles(_dateinamenschablone)) if (batcher.Add(file.FullName) == BatchStatus.Full) Dateien(batcher.Grab(id)); foreach (var subdir in dir.GetDirectories()) Dateien_enummerieren(id, subdir.FullName, batcher); } catch(UnauthorizedAccessException ex) {} }
public void Enummerieren() { var sut = new Dateisystem("*.cs"); var results = new List<Batch<string>>(); var batcher = new Batcher<string>(100); sut.Dateien += _ => { }; sut.Dateien_enummerieren("x", @"..\..", batcher); results.Add(batcher.Grab("x")); Assert.IsTrue(results.Count > 0); Assert.AreEqual("x", results[0].CorrelationId); Assert.LessOrEqual(13, results[0].Elements.Length); results[0].ForEach(Console.WriteLine); }