/// <summary> /// Opens the archive and throws exceptions or returns OperationResult.DataError if any error occurs. /// </summary> /// <param name="archiveStream">The IInStream compliant class instance, that is, the input stream.</param> /// <param name="openCallback">The ArchiveOpenCallback instance.</param> /// <returns>True if Open() succeeds; otherwise, false.</returns> private bool OpenArchive(IInStream archiveStream, ArchiveOpenCallback openCallback) { if (!_opened) { if (OpenArchiveInner(archiveStream, openCallback) != OperationResult.Ok) { if (!ThrowException(null, new SevenZipArchiveException())) { return false; } } _volumeFileNames = new ReadOnlyCollection<string>(openCallback.VolumeFileNames); _opened = true; } return true; }
private void CommonDispose() { if (_opened) { try { if (_archive != null) { _archive.Close(); } } catch (Exception) { } } _archive = null; _archiveFileData = null; _archiveProperties = null; _archiveFileInfoCollection = null; _inStream = null; if (_openCallback != null) { try { _openCallback.Dispose(); } catch (ObjectDisposedException) { } _openCallback = null; } if (_archiveStream != null) { if (_archiveStream is IDisposable) { try { if (_archiveStream is DisposeVariableWrapper) { (_archiveStream as DisposeVariableWrapper).DisposeStream = true; } (_archiveStream as IDisposable).Dispose(); } catch (ObjectDisposedException) { } _archiveStream = null; } } SevenZipLibraryManager.FreeLibrary(this, _format); }
private ArchiveOpenCallback GetArchiveOpenCallback() { return _openCallback ?? (_openCallback = String.IsNullOrEmpty(Password) ? new ArchiveOpenCallback(_fileName) : new ArchiveOpenCallback(_fileName, Password)); }