diff --git a/csharp/org/brotli/dec/BrotliInputStream.cs b/csharp/org/brotli/dec/BrotliInputStream.cs index 36f8128..c4c4daf 100644 --- a/csharp/org/brotli/dec/BrotliInputStream.cs +++ b/csharp/org/brotli/dec/BrotliInputStream.cs @@ -1,192 +1,192 @@ -/* Copyright 2015 Google Inc. All Rights Reserved. - -Distributed under MIT license. -See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ -namespace Org.Brotli.Dec -{ - /// - /// - /// decorator that decompresses brotli data. - ///

Not thread-safe. - ///

- public class BrotliInputStream : System.IO.Stream - { - public const int DefaultInternalBufferSize = 16384; - - /// Internal buffer used for efficient byte-by-byte reading. - private byte[] buffer; - - /// Number of decoded but still unused bytes in internal buffer. - private int remainingBufferBytes; - - /// Next unused byte offset. - private int bufferOffset; - - /// Decoder state. - private readonly Org.Brotli.Dec.State state = new Org.Brotli.Dec.State(); - - /// - /// Creates a - /// - /// wrapper that decompresses brotli data. - ///

For byte-by-byte reading ( - /// - /// ) internal buffer with - /// - /// size is allocated and used. - ///

Will block the thread until first kilobyte of data of source is available. - ///

- /// underlying data source - /// in case of corrupted data or source stream problems - public BrotliInputStream(System.IO.Stream source) - : this(source, DefaultInternalBufferSize, null) - { - } - - /// - /// Creates a - /// - /// wrapper that decompresses brotli data. - ///

For byte-by-byte reading ( - /// - /// ) internal buffer of specified size is - /// allocated and used. - ///

Will block the thread until first kilobyte of data of source is available. - ///

- /// compressed data source - /// - /// size of internal buffer used in case of - /// byte-by-byte reading - /// - /// in case of corrupted data or source stream problems - public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize) - : this(source, byteReadBufferSize, null) - { - } - - /// - /// Creates a - /// - /// wrapper that decompresses brotli data. - ///

For byte-by-byte reading ( - /// - /// ) internal buffer of specified size is - /// allocated and used. - ///

Will block the thread until first kilobyte of data of source is available. - ///

- /// compressed data source - /// - /// size of internal buffer used in case of - /// byte-by-byte reading - /// - /// - /// custom dictionary data; - /// - /// if not used - /// - /// in case of corrupted data or source stream problems - public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize, byte[] customDictionary) - { - if (byteReadBufferSize <= 0) - { - throw new System.ArgumentException("Bad buffer size:" + byteReadBufferSize); - } - else if (source == null) - { - throw new System.ArgumentException("source is null"); - } - this.buffer = new byte[byteReadBufferSize]; - this.remainingBufferBytes = 0; - this.bufferOffset = 0; - try - { - Org.Brotli.Dec.State.SetInput(state, source); - } - catch (Org.Brotli.Dec.BrotliRuntimeException ex) - { - throw new System.IO.IOException("Brotli decoder initialization failed", ex); - } - if (customDictionary != null) - { - Org.Brotli.Dec.Decode.SetCustomDictionary(state, customDictionary); - } - } - - /// - /// - public override void Close() - { - Org.Brotli.Dec.State.Close(state); - } - - /// - /// - public override int ReadByte() - { - if (bufferOffset >= remainingBufferBytes) - { - remainingBufferBytes = Read(buffer, 0, buffer.Length); - bufferOffset = 0; - if (remainingBufferBytes == -1) - { - return -1; - } - } - return buffer[bufferOffset++] & unchecked((int)(0xFF)); - } - - /// - /// - public override int Read(byte[] destBuffer, int destOffset, int destLen) - { - if (destOffset < 0) - { - throw new System.ArgumentException("Bad offset: " + destOffset); - } - else if (destLen < 0) - { - throw new System.ArgumentException("Bad length: " + destLen); - } - else if (destOffset + destLen > destBuffer.Length) - { - throw new System.ArgumentException("Buffer overflow: " + (destOffset + destLen) + " > " + destBuffer.Length); - } - else if (destLen == 0) - { - return 0; - } - int copyLen = System.Math.Max(remainingBufferBytes - bufferOffset, 0); - if (copyLen != 0) - { - copyLen = System.Math.Min(copyLen, destLen); - System.Array.Copy(buffer, bufferOffset, destBuffer, destOffset, copyLen); - bufferOffset += copyLen; - destOffset += copyLen; - destLen -= copyLen; - if (destLen == 0) - { - return copyLen; - } - } - try - { - state.output = destBuffer; - state.outputOffset = destOffset; - state.outputLength = destLen; - state.outputUsed = 0; - Org.Brotli.Dec.Decode.Decompress(state); - if (state.outputUsed == 0) - { - return -1; - } - return state.outputUsed + copyLen; - } - catch (Org.Brotli.Dec.BrotliRuntimeException ex) - { - throw new System.IO.IOException("Brotli stream decoding failed", ex); - } - } +/* Copyright 2015 Google Inc. All Rights Reserved. + +Distributed under MIT license. +See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ +namespace Org.Brotli.Dec +{ + /// + /// + /// decorator that decompresses brotli data. + ///

Not thread-safe. + ///

+ public class BrotliInputStream : System.IO.Stream + { + public const int DefaultInternalBufferSize = 16384; + + /// Internal buffer used for efficient byte-by-byte reading. + private byte[] buffer; + + /// Number of decoded but still unused bytes in internal buffer. + private int remainingBufferBytes; + + /// Next unused byte offset. + private int bufferOffset; + + /// Decoder state. + private readonly Org.Brotli.Dec.State state = new Org.Brotli.Dec.State(); + + /// + /// Creates a + /// + /// wrapper that decompresses brotli data. + ///

For byte-by-byte reading ( + /// + /// ) internal buffer with + /// + /// size is allocated and used. + ///

Will block the thread until first kilobyte of data of source is available. + ///

+ /// underlying data source + /// in case of corrupted data or source stream problems + public BrotliInputStream(System.IO.Stream source) + : this(source, DefaultInternalBufferSize, null) + { + } + + /// + /// Creates a + /// + /// wrapper that decompresses brotli data. + ///

For byte-by-byte reading ( + /// + /// ) internal buffer of specified size is + /// allocated and used. + ///

Will block the thread until first kilobyte of data of source is available. + ///

+ /// compressed data source + /// + /// size of internal buffer used in case of + /// byte-by-byte reading + /// + /// in case of corrupted data or source stream problems + public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize) + : this(source, byteReadBufferSize, null) + { + } + + /// + /// Creates a + /// + /// wrapper that decompresses brotli data. + ///

For byte-by-byte reading ( + /// + /// ) internal buffer of specified size is + /// allocated and used. + ///

Will block the thread until first kilobyte of data of source is available. + ///

+ /// compressed data source + /// + /// size of internal buffer used in case of + /// byte-by-byte reading + /// + /// + /// custom dictionary data; + /// + /// if not used + /// + /// in case of corrupted data or source stream problems + public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize, byte[] customDictionary) + { + if (byteReadBufferSize <= 0) + { + throw new System.ArgumentException("Bad buffer size:" + byteReadBufferSize); + } + else if (source == null) + { + throw new System.ArgumentException("source is null"); + } + this.buffer = new byte[byteReadBufferSize]; + this.remainingBufferBytes = 0; + this.bufferOffset = 0; + try + { + Org.Brotli.Dec.State.SetInput(state, source); + } + catch (Org.Brotli.Dec.BrotliRuntimeException ex) + { + throw new System.IO.IOException("Brotli decoder initialization failed", ex); + } + if (customDictionary != null) + { + Org.Brotli.Dec.Decode.SetCustomDictionary(state, customDictionary); + } + } + + /// + /// + public override void Close() + { + Org.Brotli.Dec.State.Close(state); + } + + /// + /// + public override int ReadByte() + { + if (bufferOffset >= remainingBufferBytes) + { + remainingBufferBytes = Read(buffer, 0, buffer.Length); + bufferOffset = 0; + if (remainingBufferBytes == -1) + { + return -1; + } + } + return buffer[bufferOffset++] & unchecked((int)(0xFF)); + } + + /// + /// + public override int Read(byte[] destBuffer, int destOffset, int destLen) + { + if (destOffset < 0) + { + throw new System.ArgumentException("Bad offset: " + destOffset); + } + else if (destLen < 0) + { + throw new System.ArgumentException("Bad length: " + destLen); + } + else if (destOffset + destLen > destBuffer.Length) + { + throw new System.ArgumentException("Buffer overflow: " + (destOffset + destLen) + " > " + destBuffer.Length); + } + else if (destLen == 0) + { + return 0; + } + int copyLen = System.Math.Max(remainingBufferBytes - bufferOffset, 0); + if (copyLen != 0) + { + copyLen = System.Math.Min(copyLen, destLen); + System.Array.Copy(buffer, bufferOffset, destBuffer, destOffset, copyLen); + bufferOffset += copyLen; + destOffset += copyLen; + destLen -= copyLen; + if (destLen == 0) + { + return copyLen; + } + } + try + { + state.output = destBuffer; + state.outputOffset = destOffset; + state.outputLength = destLen; + state.outputUsed = 0; + Org.Brotli.Dec.Decode.Decompress(state); + if (state.outputUsed == 0) + { + return -1; + } + return state.outputUsed + copyLen; + } + catch (Org.Brotli.Dec.BrotliRuntimeException ex) + { + throw new System.IO.IOException("Brotli stream decoding failed", ex); + } + } // <{[INJECTED CODE]}> public override bool CanRead { get {return true;} @@ -218,6 +218,6 @@ namespace Org.Brotli.Dec throw new System.NotSupportedException(); } - public override void Flush() {} - } -} + public override void Flush() {} + } +}