Remove stream-like functionality from ContentReader/Writer
Use streams instead
This commit is contained in:
@@ -113,7 +113,7 @@ public class CompressCommand : CommandBase, IExecutableCommand, ITransportationC
|
||||
await _contentAccessorFactory.GetItemCreator(resolvedParent.Provider).CreateElementAsync(resolvedParent.Provider, newItemName);
|
||||
var targetElement = (IElement) await _timelessContentProvider.GetItemByFullNameAsync(newItemName, PointInTime.Present);
|
||||
using var contentWriter = await _contentAccessorFactory.GetContentWriterFactory(resolvedParent.Provider).CreateContentWriterAsync(targetElement);
|
||||
await using var contentWriterStream = contentWriter.AsStream();
|
||||
await using var contentWriterStream = contentWriter.GetStream();
|
||||
compressOperation.SaveTo(contentWriterStream);
|
||||
|
||||
await contentWriterStream.FlushAsync(_cancellationTokenSource.Token);
|
||||
|
||||
@@ -29,7 +29,7 @@ public sealed class CompressedContentProvider : SubContentProviderBase, ICompres
|
||||
var reader = parentElementContext.ContentReader;
|
||||
var subPath = parentElementContext.SubNativePath.Path;
|
||||
|
||||
await using var readerStream = reader.AsStream();
|
||||
await using var readerStream = reader.GetStream();
|
||||
using var archive = ArchiveFactory.Open(readerStream);
|
||||
|
||||
var entry = archive.Entries.First(e => e.Key == subPath);
|
||||
|
||||
@@ -8,9 +8,6 @@ public sealed class CompressedContentReader : IContentReader
|
||||
private readonly IDisposable[] _disposables;
|
||||
private readonly Stream _stream;
|
||||
|
||||
public int PreferredBufferSize => 1024 * 1024;
|
||||
public long? Position => _stream.Position;
|
||||
|
||||
public CompressedContentReader(IArchiveEntry entry, IDisposable[] disposables)
|
||||
{
|
||||
_disposables = disposables;
|
||||
@@ -26,15 +23,5 @@ public sealed class CompressedContentReader : IContentReader
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public sealed class CompressedContentReaderFactory : SubContentReaderBase<Compre
|
||||
var reader = parentElementReaderContext.ContentReader;
|
||||
var subPath = parentElementReaderContext.SubNativePath;
|
||||
|
||||
var readerStream = reader.AsStream();
|
||||
var readerStream = reader.GetStream();
|
||||
var archive = ArchiveFactory.Open(readerStream);
|
||||
|
||||
var entry = archive.Entries.First(e => e.Key == subPath.Path);
|
||||
|
||||
@@ -41,7 +41,7 @@ public sealed class CompressedSubContentProvider : ICompressedSubContentProvider
|
||||
ItemInitializationSettings itemInitializationSettings = default)
|
||||
{
|
||||
var parentContentReader = await _contentAccessorFactory.GetContentReaderFactory(parentElement.Provider).CreateContentReaderAsync(parentElement);
|
||||
var parentContentReaderStream = parentContentReader.AsStream();
|
||||
var parentContentReaderStream = parentContentReader.GetStream();
|
||||
var archive = ArchiveFactory.Open(parentContentReaderStream);
|
||||
var disposables = new IDisposable[] {parentContentReader, parentContentReaderStream, archive};
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ public class DecompressCommand : CommandBase, IExecutableCommand, ITransportatio
|
||||
var newItem = (IElement) await _timelessContentProvider.GetItemByFullNameAsync(entryPath, PointInTime.Present);
|
||||
using var writer = await contentWriterFactory.CreateContentWriterAsync(newItem);
|
||||
|
||||
archiveEntry.WriteTo(writer.AsStream());
|
||||
archiveEntry.WriteTo(writer.GetStream());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,7 @@ public class DecompressCommand : CommandBase, IExecutableCommand, ITransportatio
|
||||
{
|
||||
var targetElement = (IElement) await _timelessContentProvider.GetItemByFullNameAsync(source, PointInTime.Present);
|
||||
var contentReader = await _contentAccessorFactory.GetContentReaderFactory(targetElement.Provider).CreateContentReaderAsync(targetElement);
|
||||
var contentReaderStream = contentReader.AsStream();
|
||||
var contentReaderStream = contentReader.GetStream();
|
||||
_disposables.Add(contentReader);
|
||||
using var archive = ArchiveFactory.Open(contentReaderStream);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user