Пример #1
0
        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);
                }
        }
Пример #2
0
        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
            });
        }
Пример #3
0
        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()));
            }
        }