using System; using System.Collections.Generic; using System.IO; using SharpCompress.Common; using SharpCompress.IO; namespace SharpCompress.Archive.GZip { internal class GZipWritableArchiveEntry : GZipArchiveEntry { private string path; private long size; private DateTime? lastModified; private bool closeStream; internal GZipWritableArchiveEntry(GZipArchive archive, Stream stream, string path, long size, DateTime? lastModified, bool closeStream) : base(archive, null) { this.Stream = stream; this.path = path; this.size = size; this.lastModified = lastModified; this.closeStream = closeStream; } public override uint Crc { get { return 0; } } public override string FilePath { get { return path; } } public override long CompressedSize { get { return 0; } } public override long Size { get { return size; } } public override DateTime? LastModifiedTime { get { return lastModified; } } public override DateTime? CreatedTime { get { return null; } } public override DateTime? LastAccessedTime { get { return null; } } public override DateTime? ArchivedTime { get { return null; } } public override bool IsEncrypted { get { return false; } } public override bool IsDirectory { get { return false; } } public override bool IsSplit { get { return false; } } internal override IEnumerable Parts { get { throw new NotImplementedException(); } } internal Stream Stream { get; private set; } public override Stream OpenEntryStream() { return new NonDisposingStream(Stream); } internal override void Close() { if (closeStream) { Stream.Dispose(); } } } }