protected abstract IEnumerable <TStoredItem> EnumerateForGet(DiskBlockPosRange range);
public IEnumerable <StoredBlock> Enumerate(Stream stream, uint fileIndex = 0, DiskBlockPosRange range = null, bool headersOnly = false) { using (HeaderOnlyScope(headersOnly)) { foreach (var r in Enumerate(stream, fileIndex, range)) { yield return(r); } } }
protected override IEnumerable <StoredBlock> EnumerateForIndex(DiskBlockPosRange range) { return(Store.Enumerate(true, range)); }
protected override IEnumerable <StoredBlock> EnumerateForGet(DiskBlockPosRange range) { return(Store.Enumerate(false, range)); }
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 static IEnumerable <StoredBlock> EnumerateFolder(string folder, DiskBlockPosRange range = null) { return(new BlockStore(folder, Network.Main).EnumerateFolder(range)); }
protected override IEnumerable <StoredItem <BlockUndo> > EnumerateForGet(DiskBlockPosRange range) { return(Store.Enumerate(range)); }
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 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; } } }
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) { range = new DiskBlockPosRange(DiskBlockPos.Begin.OfFile(fileIndex), range.End); } if (range.End.File > fileIndex) { range = new DiskBlockPosRange(range.Begin, DiskBlockPos.End.OfFile(fileIndex)); } stream.Position = range.Begin.Position; while (stream.Position < stream.Length) { yield return(ReadStoredItem(stream, new DiskBlockPos(fileIndex, (uint)stream.Position))); if (stream.Position >= range.End.Position) { break; } } }