Remove stream-like functionality from ContentReader/Writer

Use streams instead
This commit is contained in:
2023-09-15 21:46:17 +02:00
parent f8d759f044
commit d8c9929a97
31 changed files with 313 additions and 310 deletions

View File

@@ -29,7 +29,7 @@ public sealed class VirtualDiskContentProvider : SubContentProviderBase, IVirtua
var reader = parentElementContext.ContentReader;
var subPath = parentElementContext.SubNativePath.Path;
await using var readerStream = reader.AsStream();
await using var readerStream = reader.GetStream();
using var discReader = new UdfReader(readerStream);
var fileInfo = discReader.GetFileInfo(subPath);

View File

@@ -6,8 +6,6 @@ public sealed class VirtualDiskContentReader : IContentReader
{
private readonly Stream _stream;
private readonly ICollection<IDisposable> _disposables;
public int PreferredBufferSize => 1024 * 1024;
public long? Position => _stream.Position;
public VirtualDiskContentReader(Stream stream, ICollection<IDisposable> disposables)
{
@@ -15,18 +13,7 @@ public sealed class VirtualDiskContentReader : IContentReader
_disposables = disposables;
}
public async Task<byte[]> ReadBytesAsync(int bufferSize, int? offset = null)
{
var data = new byte[bufferSize];
var read = await _stream.ReadAsync(data, offset ?? 0, bufferSize);
return data[..read].ToArray();
}
public void SetPosition(long position) => _stream.Seek(position, SeekOrigin.Begin);
public Stream AsStream() => _stream;
public Stream GetStream() => _stream;
public void Dispose()
{

View File

@@ -22,7 +22,7 @@ public sealed class VirtualDiskContentReaderFactory : SubContentReaderBase<Virtu
var reader = parentElementReaderContext.ContentReader;
var subPath = parentElementReaderContext.SubNativePath;
var readerStream = reader.AsStream();
var readerStream = reader.GetStream();
var discReader = new UdfReader(readerStream);
var fileInfo = discReader.GetFileInfo(subPath.Path);

View File

@@ -38,7 +38,7 @@ public sealed class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvid
var contentReaderFactory = _contentAccessorFactory.GetContentReaderFactory(parentElement.Provider);
var reader = await contentReaderFactory.CreateContentReaderAsync(parentElement);
await using var readerStream = reader.AsStream();
await using var readerStream = reader.GetStream();
var discReader = new UdfReader(readerStream);
if (itemPath.Path.Length == 0 || itemPath.Path == Constants.SubContentProviderRootContainer)