mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-24 16:05:27 +00:00
ReadByteAsync
This commit is contained in:
@@ -127,9 +127,7 @@ namespace SharpCompress.Compressors.Xz
|
||||
|
||||
private async ValueTask ReadHeaderSize(CancellationToken cancellationToken)
|
||||
{
|
||||
using var buffer = MemoryPool<byte>.Shared.Rent(1);
|
||||
await BaseStream.ReadAsync(buffer.Memory.Slice(0, 1), cancellationToken);
|
||||
_blockHeaderSizeByte = buffer.Memory.Span[0];
|
||||
_blockHeaderSizeByte = await BaseStream.ReadByteAsync(cancellationToken);
|
||||
if (_blockHeaderSizeByte == 0)
|
||||
{
|
||||
throw new XZIndexMarkerReachedException();
|
||||
@@ -142,7 +140,7 @@ namespace SharpCompress.Compressors.Xz
|
||||
var read = await BaseStream.ReadAsync(blockHeaderWithoutCrc.Slice( 1, BlockHeaderSize - 5), cancellationToken);
|
||||
if (read != BlockHeaderSize - 5)
|
||||
{
|
||||
throw new EndOfStreamException("Reached end of stream unexectedly");
|
||||
throw new EndOfStreamException("Reached end of stream unexpectedly");
|
||||
}
|
||||
|
||||
uint crc = await BaseStream.ReadLittleEndianUInt32(cancellationToken);
|
||||
|
||||
@@ -24,6 +24,11 @@ namespace SharpCompress
|
||||
await stream.ReadAsync(buffer.Memory.Slice(0, bytes), cancellationToken);
|
||||
return func(buffer.Memory.Slice(0, bytes));
|
||||
}
|
||||
|
||||
public static ValueTask<byte> ReadByteAsync(this Stream stream, CancellationToken cancellationToken)
|
||||
{
|
||||
return stream.ReadPrimitive(1, x => x.Span[0], cancellationToken);
|
||||
}
|
||||
public static ValueTask<ushort> ReadUInt16(this Stream stream, CancellationToken cancellationToken)
|
||||
{
|
||||
return stream.ReadPrimitive(2, x => BinaryPrimitives.ReadUInt16LittleEndian(x.Span), cancellationToken);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using SharpCompress.Compressors.LZMA;
|
||||
using Xunit;
|
||||
@@ -15,7 +16,7 @@ namespace SharpCompress.Test.Streams
|
||||
MemoryStream lzma2Stream = new MemoryStream(compressedData);
|
||||
|
||||
LzmaStream decompressor = await LzmaStream.CreateAsync(properties, lzma2Stream, 5, 1);
|
||||
Assert.Equal('X', decompressor.ReadByte());
|
||||
Assert.Equal('X', (char)await decompressor.ReadByteAsync(CancellationToken.None));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user