BraintreeEncryption.Library.BouncyCastle.Asn1.ConstructedOctetStream.Read C# (CSharp) Method

Read() public method

public Read ( byte buffer, int offset, int count ) : int
buffer byte
offset int
count int
return int
        public override int Read(byte[] buffer, int offset, int count)
        {
            if (_currentStream == null)
            {
                if (!_first)
                    return 0;

                Asn1OctetStringParser s = (Asn1OctetStringParser)_parser.ReadObject();

                if (s == null)
                    return 0;

                _first = false;
                _currentStream = s.GetOctetStream();
            }

            int totalRead = 0;

            for (;;)
            {
                int numRead = _currentStream.Read(buffer, offset + totalRead, count - totalRead);

                if (numRead > 0)
                {
                    totalRead += numRead;

                    if (totalRead == count)
                        return totalRead;
                }
                else
                {
                    Asn1OctetStringParser aos = (Asn1OctetStringParser)_parser.ReadObject();

                    if (aos == null)
                    {
                        _currentStream = null;
                        return totalRead;
                    }

                    _currentStream = aos.GetOctetStream();
                }
            }
        }