public async Task Flush() { await writer.FlushAsync(); writer.Dispose(); var filters = new List <FilterEntry>(); using (var input = new StreamReader(temp.OpenShareableRead())) { string line; while ((line = await input.ReadLineAsync()) != null) { var filter = DatParser.ParseEntry(line); if (filter != null) { filters.Add(filter); } } } // Sort and merge the list var list = FilterCollection.Merge(filters); // Flush the list out using (var stream = file.Open(FileMode.Create, FileAccess.Write, FileShare.Read)) using (var listWriter = new EmuleWriter(stream)) { await listWriter.Write(list, null); } }
public async Task <FilterUpdateResult> UpdateFilterAsync(FilterDownloadResult filter, CancellationToken cancellationToken, IProgress <ProgressModel> progress) { var basePath = Environment.GetFolderPath(configFolder, Environment.SpecialFolderOption.Create); var destinationPath = Path.Combine(basePath, FolderName, "config", "ipfilter.dat"); Trace.TraceInformation("Writing filter to " + destinationPath); using var destination = File.Open(destinationPath, FileMode.Create, FileAccess.Write, FileShare.None); using var writer = new EmuleWriter(destination); await writer.Write(filter.Entries, progress); return(new FilterUpdateResult { FilterTimestamp = filter.FilterTimestamp }); }
public async Task Write() { var entries = new List <FilterEntry> { new FilterEntry(0x01020304, 0x010203FF) { Description = "Testing the description" } }; using (var stream = new MemoryStream()) { using (var writer = new EmuleWriter(stream)) { var progress = new Mock <IProgress <ProgressModel> >(); await writer.Write(entries, progress.Object); } Assert.AreEqual("1.2.3.4 - 1.2.3.255 , 0 , Testing the description\r\n", Encoding.ASCII.GetString(stream.ToArray())); } }