Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }