Exemple #1
0
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <TStoredItem> Enumerate(DiskBlockPosRange range)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            if (range == null)
#pragma warning disable CS0612 // Type or member is obsolete
            {
                range = DiskBlockPosRange.All;
            }
#pragma warning restore CS0612 // Type or member is obsolete
            using (CreateLock(FileLockType.Read))
            {
                foreach (var b in EnumerateFolder(range))
                {
                    if (b.Header.Magic == Network.Magic)
                    {
                        yield return(b);
                    }
                }
            }
        }
Exemple #2
0
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <TStoredItem> EnumerateFolder(DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            if (range == null)
#pragma warning disable CS0612 // Type or member is obsolete
            {
                range = DiskBlockPosRange.All;
            }
#pragma warning restore CS0612 // Type or member is obsolete
            foreach (var file in _Folder.GetFiles().OrderBy(f => f.Name))
            {
                var fileIndex = GetFileIndex(file.Name);
                if (fileIndex < 0)
                {
                    continue;
                }
                foreach (var block in EnumerateFile(file, (uint)fileIndex, range))
                {
                    yield return(block);
                }
            }
        }
Exemple #3
0
#pragma warning disable CS0612 // Type or member is obsolete
        public static IEnumerable <StoredBlock> EnumerateFile(string file, uint fileIndex = 0, DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            return(new BlockStore(Path.GetDirectoryName(file), Network.Main).EnumerateFile(file, fileIndex, range));
        }
 protected override IEnumerable <StoredBlock> EnumerateForIndex(DiskBlockPosRange range)
 {
     return(Store.Enumerate(true, range));
 }
 protected override IEnumerable <StoredBlock> EnumerateForGet(DiskBlockPosRange range)
 {
     return(Store.Enumerate(false, range));
 }
 protected override IEnumerable <StoredItem <BlockUndo> > EnumerateForGet(DiskBlockPosRange range)
 {
     return(Store.Enumerate(range));
 }
 protected abstract IEnumerable <TStoredItem> EnumerateForGet(DiskBlockPosRange range);
Exemple #8
0
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <TStoredItem> Enumerate(Stream stream, uint fileIndex = 0, DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            if (range == null)
#pragma warning disable CS0612 // Type or member is obsolete
            {
                range = DiskBlockPosRange.All;
            }
#pragma warning restore CS0612 // Type or member is obsolete

            if (fileIndex < range.Begin.File || range.End.File < fileIndex)
            {
                yield break;
            }
            if (range.Begin.File < fileIndex)
            {
                var start = DiskBlockPos.Begin.OfFile(fileIndex);
                if (start >= range.End)
                {
                    yield break;
                }
#pragma warning disable CS0612 // Type or member is obsolete
                range = new DiskBlockPosRange(start, range.End);
#pragma warning restore CS0612 // Type or member is obsolete
            }
            if (range.End.File > fileIndex)
            {
                var end = DiskBlockPos.End.OfFile(fileIndex);
                if (range.Begin >= end)
                {
                    yield break;
                }
#pragma warning disable CS0612 // Type or member is obsolete
                range = new DiskBlockPosRange(range.Begin, end);
#pragma warning restore CS0612 // Type or member is obsolete
            }

            stream.Position = range.Begin.Position;
            var len = stream.Length;
            while (stream.Position < len)
            {
                var storedItem = ReadStoredItem(stream, new DiskBlockPos(fileIndex, (uint)stream.Position));
                if (storedItem.Header.Magic == 0)
                {
                    break;
                }
                yield return(storedItem);

                if (stream.Position >= range.End.Position)
                {
                    break;
                }
            }
        }
 public static IEnumerable <StoredBlock> EnumerateFile(string file, uint fileIndex = 0, DiskBlockPosRange range = null)
 {
     return(new BlockStore(Path.GetDirectoryName(file), Network.Main).EnumerateFile(file, fileIndex, range));
 }
        public IEnumerable <TStoredItem> EnumerateFile(FileInfo file, uint fileIndex = 0, DiskBlockPosRange range = null)
        {
            if (range == null)
            {
                range = DiskBlockPosRange.All;
            }

            using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, BufferSize))
            {
                fs.Position = range.Begin.Position;
                foreach (var block in Enumerate(fs, fileIndex, range))
                {
                    yield return(block);
                }
            }
        }
        public IEnumerable <TStoredItem> Enumerate(Stream stream, uint fileIndex = 0, DiskBlockPosRange range = null)
        {
            if (range == null)
            {
                range = DiskBlockPosRange.All;
            }

            if (fileIndex < range.Begin.File || range.End.File < fileIndex)
            {
                yield break;
            }
            if (range.Begin.File < fileIndex)
            {
                var start = DiskBlockPos.Begin.OfFile(fileIndex);
                if (start >= range.End)
                {
                    yield break;
                }
                range = new DiskBlockPosRange(start, range.End);
            }
            if (range.End.File > fileIndex)
            {
                var end = DiskBlockPos.End.OfFile(fileIndex);
                if (range.Begin >= end)
                {
                    yield break;
                }
                range = new DiskBlockPosRange(range.Begin, end);
            }

            stream.Position = range.Begin.Position;
            var len = stream.Length;

            while (stream.Position < len)
            {
                var storedItem = ReadStoredItem(stream, new DiskBlockPos(fileIndex, (uint)stream.Position));
                if (storedItem.Header.Magic == 0)
                {
                    break;
                }
                yield return(storedItem);

                if (stream.Position >= range.End.Position)
                {
                    break;
                }
            }
        }
Exemple #12
0
        // FIXME: this methods doesn't have a path to stop the recursion.
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <StoredBlock> Enumerate(Stream stream, uint fileIndex = 0, DiskBlockPosRange range = null, bool headersOnly = false)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            using (HeaderOnlyScope(headersOnly))
            {
                foreach (var r in Enumerate(stream, fileIndex, range))
                {
                    yield return(r);
                }
            }
        }
#pragma warning disable CS0612 // Type or member is obsolete
        protected override IEnumerable <StoredItem <BlockUndo> > EnumerateForIndex(DiskBlockPosRange range)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            return(Store.Enumerate(range));
        }
Exemple #14
0
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <TStoredItem> EnumerateFile(string fileName, uint fileIndex = 0, DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            if (range == null)
#pragma warning disable CS0612 // Type or member is obsolete
            {
                range = DiskBlockPosRange.All;
            }
#pragma warning restore CS0612 // Type or member is obsolete
            return(EnumerateFile(new FileInfo(fileName), fileIndex, range));
        }
Exemple #15
0
#pragma warning disable CS0612 // Type or member is obsolete
        public IEnumerable <TStoredItem> EnumerateFile(FileInfo file, uint fileIndex = 0, DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            if (range == null)
#pragma warning disable CS0612 // Type or member is obsolete
            {
                range = DiskBlockPosRange.All;
            }
#pragma warning restore CS0612 // Type or member is obsolete

            using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, BufferSize))
            {
                fs.Position = range.Begin.Position;
                foreach (var block in Enumerate(fs, fileIndex, range))
                {
                    yield return(block);
                }
            }
        }
Exemple #16
0
#pragma warning disable CS0612 // Type or member is obsolete
        public static IEnumerable <StoredBlock> EnumerateFolder(string folder, DiskBlockPosRange range = null)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            return(new BlockStore(folder, Network.Main).EnumerateFolder(range));
        }
Exemple #17
0
 // FIXME: this methods doesn't have a path to stop the recursion.
 public IEnumerable <StoredBlock> Enumerate(Stream stream, uint fileIndex = 0, DiskBlockPosRange range = null, bool headersOnly = false)
 {
     using (HeaderOnlyScope(headersOnly))
     {
         foreach (StoredBlock block in Enumerate(stream, fileIndex, range))
         {
             yield return(block);
         }
     }
 }
 public IEnumerable <TStoredItem> EnumerateFile(string fileName, uint fileIndex = 0, DiskBlockPosRange range = null)
 {
     if (range == null)
     {
         range = DiskBlockPosRange.All;
     }
     return(EnumerateFile(new FileInfo(fileName), fileIndex, range));
 }
 public static IEnumerable <StoredBlock> EnumerateFolder(string folder, DiskBlockPosRange range = null)
 {
     return(new BlockStore(folder, Network.Main).EnumerateFolder(range));
 }
Exemple #20
0
#pragma warning disable CS0612 // Type or member is obsolete
        protected override IEnumerable <StoredBlock> EnumerateForGet(DiskBlockPosRange range)
#pragma warning restore CS0612 // Type or member is obsolete
        {
            return(Store.Enumerate(false, range));
        }