File: Base\MS\Internal\IO\Zip\ZipFileInfo.cs
Project: wpf\src\WindowsBase.csproj (WindowsBase)
//-----------------------------------------------------------------------------
//-------------   *** WARNING ***
//-------------    This file is part of a legally monitored development project.  
//-------------    Do not check in changes to this project.  Do not raid bugs on this
//-------------    code in the main PS database.  Do not contact the owner of this
//-------------    code directly.  Contact the legal team at ‘ZSLegal’ for assistance.
//-------------   *** WARNING ***
//-----------------------------------------------------------------------------
 
//-----------------------------------------------------------------------------
//
// <copyright file="ZipFileInfo.cs" company="Microsoft">
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description:
//  This is an internal class that enables interactions with Zip archives
//  for OPC scenarios 
//
// History:
//  11/19/2004: IgorBel: Initial creation.
//
//-----------------------------------------------------------------------------
 
using System;
using System.IO;
using System.Diagnostics;
 
namespace MS.Internal.IO.Zip
{
    internal sealed class ZipFileInfo
    {
        //------------------------------------------------------
        //
        //  Public Members
        //
        //------------------------------------------------------
        // None 
 
        //------------------------------------------------------
        //
        //  Internal Constructors
        //
        //------------------------------------------------------
        // None
 
        //------------------------------------------------------
        //
        // Internal API Methods (although these methods are marked as 
        // Internal they are part of the internal ZIP IO API surface 
        //
        //------------------------------------------------------
        internal Stream GetStream(FileMode mode, FileAccess access)
        {
            CheckDisposed();
            return _fileBlock.GetStream(mode, access);
        }
    
        //------------------------------------------------------
        //
        //  Internal Properties
        //
        //------------------------------------------------------
        internal string Name
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.FileName;
            }
        }
 
        internal ZipArchive ZipArchive
        {
            get
            {
                CheckDisposed();            
                return _zipArchive;
            }
        }
 
        internal CompressionMethodEnum CompressionMethod
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.CompressionMethod;
            }
        }   
                         
        internal DateTime LastModFileDateTime 
        {
            get
            {
                CheckDisposed();            
                return ZipIOBlockManager.FromMsDosDateTime(_fileBlock.LastModFileDateTime);                
            }
        }            
                
#if false
        internal bool EncryptedFlag
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.EncryptedFlag;                
            }
        }                
#endif
        
        internal DeflateOptionEnum DeflateOption
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.DeflateOption;
            }
        }                
#if false
        internal bool StreamingCreationFlag
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.StreamingCreationFlag;
            }
        }                
#endif
        // This ia Directory flag based on the informtion from the central directory 
        // at the moment we have only provide reliable value for the files authored in MS-DOS 
        // The upper byte of version made by indicating (OS) must be == 0 (MS-DOS)
        // for the other cases (OSes) we will return false 
        internal bool FolderFlag
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.FolderFlag;
            }
        }                
 
        // This ia Directory flag based on the informtion from the central directory 
        // at the moment we have only provide reliable value for the files authored in MS-DOS 
        // The upper byte of version made by indicating (OS) must be == 0 (MS-DOS)
        // for the other cases (OSes) we will return false 
        internal bool VolumeLabelFlag
        {
            get
            {
                CheckDisposed();            
                return _fileBlock.VolumeLabelFlag;
            }
        }                
        
        //------------------------------------------------------
        // Internal NON API Constructor (this constructor is marked as internal 
        // and isNOT part of the ZIP IO API surface) 
        //  It supposed to be called only by the ZipArchive class 
        //------------------------------------------------------
        internal ZipFileInfo(ZipArchive zipArchive, ZipIOLocalFileBlock fileBlock)
        {
            Debug.Assert((fileBlock != null) && (zipArchive != null));
            _fileBlock = fileBlock;
            _zipArchive = zipArchive;
#if DEBUG
            // validate that date time is legal
            DateTime dt = LastModFileDateTime;
#endif
        }
 
        //------------------------------------------------------
        // Internal NON API property to be used to map FileInfo back to a block that needs to be deleted 
        // (this prperty is marked as internal and isNOT part of the ZIP IO API surface)         
        //  It supposed to be called only by the ZipArchive class 
        //------------------------------------------------------
        internal ZipIOLocalFileBlock LocalFileBlock
        {
            get
            {
                return _fileBlock;
            }
        }
        //------------------------------------------------------
        //
        //  Private Methods
        //
        //------------------------------------------------------
        private void CheckDisposed()
        {
            _fileBlock.CheckDisposed();
        }
 
        //------------------------------------------------------
        //
        //  Private Properties
        //
        //------------------------------------------------------
 
        //------------------------------------------------------
        //
        //  Private Fields 
        //
        //------------------------------------------------------        
        private ZipIOLocalFileBlock _fileBlock;
        private ZipArchive _zipArchive;
    }
}