public static async ValueTask <ReadOnlyMemory <byte> > ReadAsMuchAsPossibleAsync(this Stream stream, int bufferSize) { var buffer = SocketMemoryUtils.AllocateByteArray(bufferSize); var readSize = await stream.ReadAsync(buffer, 0, bufferSize); if (readSize == 0) { throw new Exception("Disconnected"); } return(new ReadOnlyMemory <byte>(buffer, 0, readSize)); }
public static async Task <byte[]> CreateArrayAndReaderItFromSocketAsync(this Stream stream, int size) { var result = SocketMemoryUtils.AllocateByteArray(size); var read = 0; while (read < size) { var readChunkSize = await stream.ReadAsync(result, read, result.Length - read); if (readChunkSize == 0) { throw new Exception("Disconnected"); } read += readChunkSize; } return(result); }