/// <summary>
        /// Initializes a new instance of the <seealso cref="Base32DecodingStream"/> class using <seealso cref="Stream"/> object to write encoded string to.
        /// </summary>
        /// <param name="underlyingStream">The <seealso cref="Stream"/> object to write encoded string to. Must support writing.</param>
        /// <param name="bufferSize"></param>
        public Base32DecodingReadStream(Stream underlyingStream, int bufferSize = BUFFER_SIZE)
        {
            if (null == underlyingStream)
            {
                throw new ArgumentNullException(nameof(underlyingStream));
            }

            if (!underlyingStream.CanRead)
            {
                throw new ArgumentException("The underlying stream must support reading");
            }

            if (bufferSize < 1024)
            {
                throw new ArgumentOutOfRangeException(nameof(bufferSize), "Buffer is too small, must be greater or equal than 1024");
            }

            _underlyingStream = underlyingStream;
            _decodePipe       = new Base32DecodePipe(OnDecodedData);

            _inputBuffer = new byte[bufferSize];

            _decodeBuffer = new byte[bufferSize];
            _decodeOffset = bufferSize; // emulate 'all data has been read out' situation
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of the <seealso cref="Base32DecodingStream"/> class using <seealso cref="Stream"/> object to write encoded string to.
        /// </summary>
        /// <param name="underlyingStream">The <seealso cref="Stream"/> object to write encoded string to. Must support writing.</param>
        public Base32DecodingStream(Stream underlyingStream)
        {
            if (null == underlyingStream)
            {
                throw new ArgumentNullException(nameof(underlyingStream));
            }

            if (!underlyingStream.CanWrite)
            {
                throw new ArgumentException("The underlying stream must support writing");
            }

            _underlyingStream = underlyingStream;
            _decodePipe       = new Base32DecodePipe(OnDecodedData);
        }