Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / IO / Packaging / ZipPackagePart.cs / 1305600 / ZipPackagePart.cs
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// This is a subclass for the abstract PackagePart class.
// This implementation is specific to Zip file format.
//
// History:
// 12/28/2004: SarjanaS: Initial creation. [BruceMac provided some of the
// initial code]
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using MS.Internal.IO.Zip;
using MS.Internal.IO.Packaging;
using MS.Internal; // for Invariant
namespace System.IO.Packaging
{
///
/// This class represents a Part within a Zip container.
/// This is a part of the Packaging Layer APIs
///
public sealed class ZipPackagePart : PackagePart
{
//-----------------------------------------------------
//
// Public Constructors
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Public Methods
//
//------------------------------------------------------
#region Public Methods
///
/// Custom Implementation for the GetStream Method
///
/// Mode in which the stream should be opened
/// Access with which the stream should be opened
/// Stream Corresponding to this part
protected override Stream GetStreamCore(FileMode mode, FileAccess access)
{
if (Package.InStreamingCreation)
{
// Convert Metro CompressionOption to Zip CompressionMethodEnum.
CompressionMethodEnum compressionMethod;
DeflateOptionEnum deflateOption;
ZipPackage.GetZipCompressionMethodFromOpcCompressionOption(this.CompressionOption,
out compressionMethod, out deflateOption);
// Mode and access get validated in StreamingZipPartStream().
return new StreamingZipPartStream(
PackUriHelper.GetStringForPartUri(this.Uri),
_zipArchive,
compressionMethod, deflateOption,
mode, access);
}
else if (_zipFileInfo != null)
{
// Case of an atomic part.
return _zipFileInfo.GetStream(mode, access);
}
else
{
// Case of an interleaved part.
Invariant.Assert(_pieces != null);
return new InterleavedZipPartStream(this, mode, access);
}
}
#endregion Public Methods
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
// None
//-----------------------------------------------------
//
// Internal Constructors
//
//-----------------------------------------------------
#region Internal Constructors
///
/// Constructs a ZipPackagePart for an atomic (i.e. non-interleaved) part.
/// This is called from the ZipPackage class as a result of GetPartCore,
/// GetPartsCore or CreatePartCore methods
///
///
///
///
///
///
internal ZipPackagePart(ZipPackage container,
ZipFileInfo zipFileInfo,
PackUriHelper.ValidatedPartUri partUri,
string contentType,
CompressionOption compressionOption)
:base(container, partUri, contentType, compressionOption)
{
_zipArchive = zipFileInfo.ZipArchive;
_zipFileInfo = zipFileInfo;
}
///
/// Constructs a ZipPackagePart. This is called from ZipPackage.CreatePartCore in streaming
/// production.
/// No piece is created until the first write operation on the associated stream. Therefore
/// this constructor does not take a ZipFileInfo.
///
///
///
///
///
///
internal ZipPackagePart(ZipPackage container,
ZipArchive zipArchive,
PackUriHelper.ValidatedPartUri partUri,
string contentType,
CompressionOption compressionOption)
:base(container, partUri, contentType, compressionOption)
{
_zipArchive = zipArchive;
}
///
/// Constructs a ZipPackagePart for an interleaved part. This is called outside of streaming
/// production when an interleaved part is encountered in the package.
///
///
///
///
///
///
///
internal ZipPackagePart(ZipPackage container,
ZipArchive zipArchive,
List pieces,
PackUriHelper.ValidatedPartUri partUri,
string contentType,
CompressionOption compressionOption)
:base(container, partUri, contentType, compressionOption)
{
_zipArchive = zipArchive;
_pieces = pieces;
}
#endregion Internal Constructors
//-----------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Properties
///
/// Obtain the sorted array of piece descriptors for an interleaved part.
///
internal List PieceDescriptors
{
get
{
return _pieces;
}
}
///
/// Obtain the ZipFileInfo descriptor of an atomic part.
///
internal ZipFileInfo ZipFileInfo
{
get
{
return _zipFileInfo;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
// None
//------------------------------------------------------
//
// Internal Events
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Private Methods
//
//-----------------------------------------------------
// None
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Variables
// Zip item info for an atomic part.
private ZipFileInfo _zipFileInfo;
// Piece descriptors for an interleaved part.
private List _pieces;
//ZipArhive
private ZipArchive _zipArchive;
#endregion Private Variables
//------------------------------------------------------
}
}
// 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
- WebHeaderCollection.cs
- DataGridViewTextBoxCell.cs
- DefaultBindingPropertyAttribute.cs
- TypeUtils.cs
- SimpleWorkerRequest.cs
- ObjectPersistData.cs
- GridErrorDlg.cs
- MessageProtectionOrder.cs
- VisualStyleTypesAndProperties.cs
- OleDbParameter.cs
- HtmlTitle.cs
- HostVisual.cs
- _CacheStreams.cs
- IxmlLineInfo.cs
- Blend.cs
- Pens.cs
- TextOutput.cs
- ColorTranslator.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- SafeMILHandleMemoryPressure.cs
- HtmlInputButton.cs
- DataObjectMethodAttribute.cs
- PageThemeParser.cs
- ConfigurationCollectionAttribute.cs
- RegexTree.cs
- FieldAccessException.cs
- StatusBarAutomationPeer.cs
- CacheOutputQuery.cs
- HttpClientCertificate.cs
- DateTimeConstantAttribute.cs
- PhotoPrintingIntent.cs
- BamlVersionHeader.cs
- IncrementalCompileAnalyzer.cs
- DocumentGridContextMenu.cs
- LabelLiteral.cs
- MonitoringDescriptionAttribute.cs
- HwndMouseInputProvider.cs
- Int16Converter.cs
- HwndSourceParameters.cs
- AstTree.cs
- UdpReplyToBehavior.cs
- WeakHashtable.cs
- SchemaImporterExtension.cs
- WindowsStatic.cs
- FunctionDetailsReader.cs
- MachineKeySection.cs
- ImportCatalogPart.cs
- CompoundFileStreamReference.cs
- ViewSimplifier.cs
- Collection.cs
- TypeExtensionSerializer.cs
- Graphics.cs
- SecurityUtils.cs
- TransformerInfoCollection.cs
- SqlExpressionNullability.cs
- TrackingMemoryStream.cs
- SqlWriter.cs
- TemplateParser.cs
- CompiledAction.cs
- SecurityElement.cs
- CompositeKey.cs
- PanelStyle.cs
- SubclassTypeValidatorAttribute.cs
- SuppressMergeCheckAttribute.cs
- WindowsTitleBar.cs
- oledbconnectionstring.cs
- ControlPropertyNameConverter.cs
- XmlAttributeAttribute.cs
- IMembershipProvider.cs
- HostExecutionContextManager.cs
- DefaultEvaluationContext.cs
- AspCompat.cs
- InstanceLockedException.cs
- StateDesigner.cs
- _ContextAwareResult.cs
- BamlBinaryWriter.cs
- FixUpCollection.cs
- ReadOnlyAttribute.cs
- TypedReference.cs
- RangeValuePattern.cs
- SignalGate.cs
- SerialPinChanges.cs
- MediaTimeline.cs
- ErrorWrapper.cs
- SignHashRequest.cs
- AstTree.cs
- ReceiveParametersContent.cs
- LingerOption.cs
- ResumeStoryboard.cs
- ImpersonateTokenRef.cs
- CngKeyBlobFormat.cs
- NotifyInputEventArgs.cs
- SettingsAttributeDictionary.cs
- FileDataSourceCache.cs
- ImportOptions.cs
- TypeDependencyAttribute.cs
- SimpleRecyclingCache.cs
- FirstMatchCodeGroup.cs
- PageContent.cs
- ExtensibleClassFactory.cs