a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
using System;
|
|
using System.IO;
|
|
using SharpCompress.Common;
|
|
|
|
namespace SharpCompress.Writer
|
|
{
|
|
internal abstract class AbstractWriter : IWriter
|
|
{
|
|
private bool closeStream;
|
|
private bool isDisposed;
|
|
|
|
protected AbstractWriter(ArchiveType type)
|
|
{
|
|
this.WriterType = type;
|
|
}
|
|
|
|
protected void InitalizeStream(Stream stream, bool closeStream)
|
|
{
|
|
this.OutputStream = stream;
|
|
this.closeStream = closeStream;
|
|
}
|
|
|
|
protected Stream OutputStream { get; private set; }
|
|
|
|
public ArchiveType WriterType { get; private set; }
|
|
|
|
public abstract void Write(string filename, System.IO.Stream source, DateTime? modificationTime);
|
|
|
|
protected virtual void Dispose(bool isDisposing)
|
|
{
|
|
if (isDisposing && closeStream)
|
|
{
|
|
OutputStream.Dispose();
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
if (!isDisposed)
|
|
{
|
|
GC.SuppressFinalize(this);
|
|
Dispose(true);
|
|
isDisposed = true;
|
|
}
|
|
}
|
|
|
|
~AbstractWriter()
|
|
{
|
|
if (!isDisposed)
|
|
{
|
|
Dispose(false);
|
|
isDisposed = true;
|
|
}
|
|
}
|
|
}
|
|
} |