internal DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen, bool usingGZip) { this._stream = stream; this._mode = mode; this._leaveOpen = leaveOpen; if (this._stream == null) { throw new ArgumentNullException("stream"); } switch (this._mode) { case CompressionMode.Decompress: if (!this._stream.CanRead) { throw new ArgumentException("The base stream is not readable.", "stream"); } this.inflater = new Inflater(usingGZip); this.m_CallBack = new AsyncCallback(this.ReadCallback); break; case CompressionMode.Compress: if (!this._stream.CanWrite) { throw new ArgumentException("The base stream is not writeable.", "stream"); } this.deflater = new Deflater(usingGZip); this.m_AsyncWriterDelegate = new AsyncWriteDelegate(this.InternalWrite); this.m_CallBack = new AsyncCallback(this.WriteCallback); break; default: throw new ArgumentException("Enum value was out of legal range.", "mode"); } this.buffer = new byte[0x1000]; }
public DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen) { this._stream = stream; this._mode = mode; this._leaveOpen = leaveOpen; if (this._stream == null) { throw new ArgumentNullException("stream"); } switch (this._mode) { case CompressionMode.Decompress: if (!this._stream.CanRead) { throw new ArgumentException(SR.GetString("NotReadableStream"), "stream"); } this.inflater = new Inflater(); this.m_CallBack = new AsyncCallback(this.ReadCallback); break; case CompressionMode.Compress: if (!this._stream.CanWrite) { throw new ArgumentException(SR.GetString("NotWriteableStream"), "stream"); } this.deflater = new Deflater(); this.m_AsyncWriterDelegate = new AsyncWriteDelegate(this.InternalWrite); this.m_CallBack = new AsyncCallback(this.WriteCallback); break; default: throw new ArgumentException(SR.GetString("ArgumentOutOfRange_Enum"), "mode"); } this.buffer = new byte[0x1000]; }
public DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen) { if (stream == null) throw new ArgumentNullException("stream"); switch (mode) { case CompressionMode.Decompress: if (!stream.CanRead) { throw new ArgumentException(SR.NotReadableStream, "stream"); } _inflater = new Inflater(); break; case CompressionMode.Compress: if (!stream.CanWrite) { throw new ArgumentException(SR.NotWriteableStream, "stream"); } _deflater = CreateDeflater(null); break; default: throw new ArgumentException(SR.ArgumentOutOfRange_Enum, "mode"); } _stream = stream; _mode = mode; _leaveOpen = leaveOpen; _buffer = new byte[DefaultBufferSize]; }
internal DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen, bool usingGZip){ _stream = stream; _mode = mode; _leaveOpen = leaveOpen; if(_stream == null ) { throw new ArgumentNullException("stream"); } switch (_mode) { case CompressionMode.Decompress: if (!(_stream.CanRead)) { throw new ArgumentException(SR.GetString(SR.NotReadableStream), "stream"); } inflater = new Inflater(usingGZip); m_CallBack = new AsyncCallback(ReadCallback); break; case CompressionMode.Compress: if (!(_stream.CanWrite)) { throw new ArgumentException(SR.GetString(SR.NotWriteableStream), "stream"); } deflater = new Deflater(usingGZip); m_AsyncWriterDelegate = new AsyncWriteDelegate(this.InternalWrite); m_CallBack = new AsyncCallback(WriteCallback); break; default: throw new ArgumentException(SR.GetString(SR.ArgumentOutOfRange_Enum), "mode"); } buffer = new byte[bufferSize]; }
public DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen) { if(stream == null ) throw new ArgumentNullException("stream"); if (CompressionMode.Compress != mode && CompressionMode.Decompress != mode) throw new ArgumentException(SR.GetString(SR.ArgumentOutOfRange_Enum), "mode"); _stream = stream; _mode = mode; _leaveOpen = leaveOpen; switch (_mode) { case CompressionMode.Decompress: if (!_stream.CanRead) { throw new ArgumentException(SR.GetString(SR.NotReadableStream), "stream"); } inflater = new Inflater(); m_CallBack = new AsyncCallback(ReadCallback); break; case CompressionMode.Compress: if (!_stream.CanWrite) { throw new ArgumentException(SR.GetString(SR.NotWriteableStream), "stream"); } deflater = CreateDeflater(null); m_AsyncWriterDelegate = new AsyncWriteDelegate(this.InternalWrite); m_CallBack = new AsyncCallback(WriteCallback); break; } // switch (_mode) buffer = new byte[DefaultBufferSize]; }
/// <summary> /// Sets up this DeflateStream to be used for Zlib Inflation/Decompression /// </summary> internal void InitializeInflater(Stream stream, bool leaveOpen, int windowBits) { Debug.Assert(stream != null); if (!stream.CanRead) throw new ArgumentException(SR.NotSupported_UnreadableStream, nameof(stream)); _inflater = new Inflater(windowBits); _stream = stream; _mode = CompressionMode.Decompress; _leaveOpen = leaveOpen; }
protected override void Dispose(bool disposing) { try { PurgeBuffers(disposing); } finally { // Close the underlying stream even if PurgeBuffers threw. // Stream.Close() may throw here (may or may not be due to the same error). // In this case, we still need to clean up internal resources, hence the inner finally blocks. try { if (disposing && !_leaveOpen && _stream != null) _stream.Dispose(); } finally { _stream = null; try { if (_deflater != null) _deflater.Dispose(); if (_inflater != null) _inflater.Dispose(); } finally { _deflater = null; _inflater = null; base.Dispose(disposing); } } } }
/// <summary> /// Sets up this DeflateStream to be used for Zlib Inflation/Decompression /// </summary> internal void InitializeInflater(Stream stream, bool leaveOpen, int windowBits) { Debug.Assert(stream != null); if (!stream.CanRead) throw new ArgumentException(SR.NotSupported_UnreadableStream, "stream"); _inflater = new Inflater(windowBits); _stream = stream; _mode = CompressionMode.Decompress; _leaveOpen = leaveOpen; _buffer = ArrayPool<byte>.Shared.Rent(DefaultBufferSize); }
protected override void Dispose(bool disposing) { try { PurgeBuffers(disposing); } finally { // Close the underlying stream even if PurgeBuffers threw. // Stream.Close() may throw here (may or may not be due to the same error). // In this case, we still need to clean up internal resources, hence the inner finally blocks. try { if (disposing && !_leaveOpen) _stream?.Dispose(); } finally { _stream = null; try { _deflater?.Dispose(); _inflater?.Dispose(); } finally { _deflater = null; _inflater = null; byte[] buffer = _buffer; if (buffer != null) { _buffer = null; if (!AsyncOperationIsActive) { ArrayPool<byte>.Shared.Return(buffer); } } base.Dispose(disposing); } } } }