Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Sys / System / IO / compression / GZipStream.cs / 1305376 / GZipStream.cs
namespace System.IO.Compression {
using System.IO;
using System.Diagnostics;
using System.Security.Permissions;
public class GZipStream : Stream {
private DeflateStream deflateStream;
public GZipStream(Stream stream, CompressionMode mode) : this( stream, mode, false) {
}
public GZipStream(Stream stream, CompressionMode mode, bool leaveOpen) {
deflateStream = new DeflateStream(stream, mode, leaveOpen);
if (mode == CompressionMode.Compress) {
IFileFormatWriter writeCommand = new GZipFormatter();
deflateStream.SetFileFormatWriter(writeCommand);
}
else {
IFileFormatReader readCommand = new GZipDecoder();
deflateStream.SetFileFormatReader(readCommand);
}
}
public override bool CanRead {
get {
if( deflateStream == null) {
return false;
}
return deflateStream.CanRead;
}
}
public override bool CanWrite {
get {
if( deflateStream == null) {
return false;
}
return deflateStream.CanWrite;
}
}
public override bool CanSeek {
get {
if( deflateStream == null) {
return false;
}
return deflateStream.CanSeek;
}
}
public override long Length {
get {
throw new NotSupportedException(SR.GetString(SR.NotSupported));
}
}
public override long Position {
get {
throw new NotSupportedException(SR.GetString(SR.NotSupported));
}
set {
throw new NotSupportedException(SR.GetString(SR.NotSupported));
}
}
public override void Flush() {
if( deflateStream == null) {
throw new ObjectDisposedException(null, SR.GetString(SR.ObjectDisposed_StreamClosed));
}
deflateStream.Flush();
return;
}
public override long Seek(long offset, SeekOrigin origin) {
throw new NotSupportedException(SR.GetString(SR.NotSupported));
}
public override void SetLength(long value) {
throw new NotSupportedException(SR.GetString(SR.NotSupported));
}
[HostProtection(ExternalThreading=true)]
public override IAsyncResult BeginRead(byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState) {
if( deflateStream == null) {
throw new InvalidOperationException(SR.GetString(SR.ObjectDisposed_StreamClosed));
}
return deflateStream.BeginRead(array, offset, count, asyncCallback, asyncState);
}
public override int EndRead(IAsyncResult asyncResult) {
if( deflateStream == null) {
throw new InvalidOperationException(SR.GetString(SR.ObjectDisposed_StreamClosed));
}
return deflateStream.EndRead(asyncResult);
}
[HostProtection(ExternalThreading=true)]
public override IAsyncResult BeginWrite(byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState) {
if( deflateStream == null) {
throw new InvalidOperationException(SR.GetString(SR.ObjectDisposed_StreamClosed));
}
return deflateStream.BeginWrite(array, offset, count, asyncCallback, asyncState);
}
public override void EndWrite(IAsyncResult asyncResult) {
if( deflateStream == null) {
throw new InvalidOperationException(SR.GetString(SR.ObjectDisposed_StreamClosed));
}
deflateStream.EndWrite(asyncResult);
}
public override int Read(byte[] array, int offset, int count) {
if( deflateStream == null) {
throw new ObjectDisposedException(null, SR.GetString(SR.ObjectDisposed_StreamClosed));
}
return deflateStream.Read(array, offset, count);
}
public override void Write(byte[] array, int offset, int count) {
if( deflateStream == null) {
throw new ObjectDisposedException(null, SR.GetString(SR.ObjectDisposed_StreamClosed));
}
deflateStream.Write(array, offset, count);
}
protected override void Dispose(bool disposing) {
try {
if (disposing && deflateStream != null) {
deflateStream.Close();
}
deflateStream = null;
}
finally {
base.Dispose(disposing);
}
}
public Stream BaseStream {
get {
if( deflateStream != null) {
return deflateStream.BaseStream;
}
else {
return null;
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IconBitmapDecoder.cs
- Sql8ExpressionRewriter.cs
- SrgsToken.cs
- BamlTreeUpdater.cs
- ExpressionNormalizer.cs
- LinqDataSourceSelectEventArgs.cs
- StatusBarItemAutomationPeer.cs
- IndexerNameAttribute.cs
- TemplateControlParser.cs
- ActionFrame.cs
- PageClientProxyGenerator.cs
- TreeNodeMouseHoverEvent.cs
- UseAttributeSetsAction.cs
- FactoryGenerator.cs
- designeractionlistschangedeventargs.cs
- BindingNavigator.cs
- EventSetter.cs
- FileUtil.cs
- AspCompat.cs
- BooleanAnimationUsingKeyFrames.cs
- AlphaSortedEnumConverter.cs
- CommandDevice.cs
- Point3DAnimationUsingKeyFrames.cs
- HttpResponseHeader.cs
- XsltArgumentList.cs
- CompilationUtil.cs
- GridViewCommandEventArgs.cs
- MenuItemBindingCollection.cs
- Point3D.cs
- XmlEntityReference.cs
- BitmapDecoder.cs
- EmbeddedMailObjectsCollection.cs
- ReferenceList.cs
- EventMap.cs
- _Connection.cs
- UIAgentAsyncBeginRequest.cs
- QilChoice.cs
- messageonlyhwndwrapper.cs
- DataGridLinkButton.cs
- RowsCopiedEventArgs.cs
- EnumBuilder.cs
- SystemIcmpV6Statistics.cs
- SiteMapProvider.cs
- GroupBoxAutomationPeer.cs
- EventWaitHandleSecurity.cs
- JournalEntry.cs
- SafeUserTokenHandle.cs
- EncoderNLS.cs
- MultiBinding.cs
- WebPartEventArgs.cs
- SelectionProcessor.cs
- XmlDataFileEditor.cs
- DataListCommandEventArgs.cs
- LinqToSqlWrapper.cs
- HMACRIPEMD160.cs
- ProgressBarRenderer.cs
- CalendarDesigner.cs
- Process.cs
- DesigntimeLicenseContext.cs
- NegotiationTokenAuthenticatorState.cs
- DbUpdateCommandTree.cs
- LockedActivityGlyph.cs
- SponsorHelper.cs
- HttpsChannelFactory.cs
- ProfileService.cs
- DbParameterHelper.cs
- ProjectedWrapper.cs
- SerializationBinder.cs
- WebEvents.cs
- LicenseException.cs
- KnownTypesProvider.cs
- AnimationException.cs
- oledbmetadatacollectionnames.cs
- NotCondition.cs
- MemberPathMap.cs
- StylusPlugInCollection.cs
- SizeLimitedCache.cs
- AudioFormatConverter.cs
- ILGenerator.cs
- ApplicationActivator.cs
- Model3DCollection.cs
- DataFormats.cs
- CodeEntryPointMethod.cs
- XmlWrappingReader.cs
- DataGridRowEventArgs.cs
- EntityRecordInfo.cs
- RemotingHelper.cs
- SqlCaseSimplifier.cs
- OdbcConnectionHandle.cs
- EventPrivateKey.cs
- TextDecorationCollection.cs
- ValuePatternIdentifiers.cs
- Triangle.cs
- ReadWriteObjectLock.cs
- MemberPath.cs
- ConfigXmlDocument.cs
- ParamArrayAttribute.cs
- AttributeAction.cs
- UnsupportedPolicyOptionsException.cs
- XmlNodeChangedEventManager.cs