/// <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 }
/// <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); }