using System.IO;
using SharpCompress.IO;
using SharpCompress.Readers;
namespace SharpCompress.Common
{
public abstract class Volume : IVolume
{
private readonly Stream _actualStream;
internal Volume(Stream stream, ReaderOptions readerOptions)
{
ReaderOptions = readerOptions;
if (readerOptions.LeaveStreamOpen)
{
stream = new NonDisposingStream(stream);
}
_actualStream = stream;
}
internal Stream Stream => _actualStream;
protected ReaderOptions ReaderOptions { get; }
///
/// RarArchive is the first volume of a multi-part archive.
/// Only Rar 3.0 format and higher
///
public virtual bool IsFirstVolume => true;
///
/// RarArchive is part of a multi-part archive.
///
public virtual bool IsMultiVolume => true;
private bool _disposed;
public void Dispose()
{
if (!_disposed)
{
_actualStream.Dispose();
_disposed = true;
}
}
}
}