Skip should use framework stuff

This commit is contained in:
Adam Hathcock
2026-01-06 12:45:13 +00:00
parent e4d8582a2a
commit cf50311b9c

View File

@@ -71,48 +71,19 @@ internal static class Utility
return;
}
using var buffer = MemoryPool<byte>.Shared.Rent(TEMP_BUFFER_SIZE);
while (advanceAmount > 0)
{
var toRead = (int)Math.Min(buffer.Memory.Length, advanceAmount);
var read = source.Read(buffer.Memory.Slice(0, toRead).Span);
if (read <= 0)
{
break;
}
advanceAmount -= read;
}
using var readOnlySubStream = new IO.ReadOnlySubStream(source, advanceAmount);
readOnlySubStream.CopyTo(Stream.Null);
}
public static void Skip(this Stream source)
{
using var buffer = MemoryPool<byte>.Shared.Rent(TEMP_BUFFER_SIZE);
while (source.Read(buffer.Memory.Span) > 0) { }
}
public static void Skip(this Stream source) => source.CopyTo(Stream.Null);
public static async Task SkipAsync(
public static Task SkipAsync(
this Stream source,
CancellationToken cancellationToken = default
)
{
var array = ArrayPool<byte>.Shared.Rent(TEMP_BUFFER_SIZE);
try
{
while (true)
{
var read = await source
.ReadAsync(array, 0, array.Length, cancellationToken)
.ConfigureAwait(false);
if (read <= 0)
{
break;
}
}
}
finally
{
ArrayPool<byte>.Shared.Return(array);
}
cancellationToken.ThrowIfCancellationRequested();
return source.CopyToAsync(Stream.Null);
}
public static DateTime DosDateToDateTime(ushort iDate, ushort iTime)