Exemple #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);

            // Determine the desired format from the file extension
            var format = file.Extension.StartsWith(".p2p") ? FilterFileFormat.P2p : FilterFileFormat.Emule;

            //using var listWriter = (format == FilterFileFormat.Emule ? new EmuleWriter(stream) : (IFormatWriter)new BitTorrentWriter(stream));
            using var listWriter = new P2pWriter(stream);
            await listWriter.Write(list, null);
        }
        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);
                }
        }
Exemple #3
0
        public async Task Flush()
        {
            await writer.FlushAsync();

            writer.Dispose();

            var lines = new List <string>();

            using (var input = new StreamReader(temp.OpenShareableRead()))
            {
                string line;
                while ((line = await input.ReadLineAsync()) != null)
                {
                    lines.Add(line);
                }
            }

            using (var finalWriter = new StreamWriter(file.Open(FileMode.Create, FileAccess.Write, FileShare.Read)))
            {
                foreach (var line in lines.OrderBy(x => x).Distinct())
                {
                    await finalWriter.WriteLineAsync(line);
                }
            }
        }