Microsoft.Azure.Amqp.BufferListStream.ReadStream C# (CSharp) Method

ReadStream() public static method

public static ReadStream ( Stream stream, int segmentSize, int &length ) : ArraySegment[]
stream Stream
segmentSize int
length int
return ArraySegment[]
        public static ArraySegment<byte>[] ReadStream(Stream stream, int segmentSize, out int length)
        {
            if (stream == null)
            {
                throw Fx.Exception.ArgumentNull("stream");
            }

            ArraySegment<byte>[] result;
            BufferListStream bufferListStream = stream as BufferListStream;
            if (bufferListStream != null)
            {
                result = bufferListStream.bufferList.ToArray();
                length = (int)bufferListStream.length;
            }
            else
            {
                length = 0;
                List<ArraySegment<byte>> buffers = new List<ArraySegment<byte>>();
                while (true)
                {
                    byte[] buffer = new byte[segmentSize];
                    int bytesRead = stream.Read(buffer, 0, buffer.Length);
                    if (bytesRead == 0)
                    {
                        break;
                    }

                    buffers.Add(new ArraySegment<byte>(buffer, 0, bytesRead));
                    length += bytesRead;
                }

                result = buffers.ToArray();
            }

            return result;
        }
    }