public SeamlessArchiveFileSystem(IFileSystem fileSystem) { FileSystem = fileSystem; _rootUsage = new FileSystemUsage { Owner = this, FileSystem = FileSystem, ArchiveFile = null }; }
private FileSystemEntity GetActualLocation(FileSystemPath path) { FileSystemPath archivePath; if (!TryGetArchivePath(path, out archivePath)) { return(FileSystemEntity.Create(FileSystem, path)); } var archiveFile = (File)GetActualLocation(archivePath); FileSystemUsage usage = GetArchiveFs(archiveFile); return(FileSystemEntity.Create(usage.FileSystem, GetRelativePath(path))); }
FileSystemUsage GetArchiveFs(File archiveFile) { if (_usedArchives.TryGetValue(archiveFile, out var usage)) { return(usage); } var archiveFs = CreateArchiveFileSystem(archiveFile); usage = new FileSystemUsage { Owner = this, FileSystem = archiveFs, ArchiveFile = archiveFile }; _usedArchives[archiveFile] = usage; //System.Diagnostics.Debug.WriteLine("Open archives: " + _usedArchives.Count); return(usage); }
public FileSystemReference(FileSystemUsage usage) { Usage = usage; }
private FileSystemUsage GetArchiveFs(File archiveFile) { FileSystemUsage usage; if (_usedArchives.TryGetValue(archiveFile, out usage)) { //System.Diagnostics.Debug.WriteLine("Open archives: " + _usedArchives.Count); return usage; } var archiveFs = CreateArchiveFileSystem(archiveFile); usage = new FileSystemUsage { Owner = this, FileSystem = archiveFs, ArchiveFile = archiveFile }; _usedArchives[archiveFile] = usage; //System.Diagnostics.Debug.WriteLine("Open archives: " + _usedArchives.Count); return usage; }