private Stream GetStream() { Stream stream; switch (_fileType) { case FileTypes.Console: stream = Console.OpenStandardInput(); break; case FileTypes.Regular: stream = new FileStream(_file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); break; case FileTypes.ArchivedFile: stream = ArchiveSupport.GetFileStream(_file); break; default: throw new InvalidOperationException( $"Invalid _fileType {_fileType}"); } return(stream); }
public File(string file, TailPbl bl, int fileIndex) { if (string.IsNullOrEmpty(file)) { throw new ArgumentException(@"Param cannot be empty", nameof(file)); } _bl = bl ?? throw new ArgumentNullException(nameof(bl)); _file = file; _fileIndex = fileIndex; _logicalLinesHistoryQueue = new LogicalLinesHistoryQueue(Math.Max(1, Configs.ContextBefore)); _startFromNum = Configs.LinesStartNumber; if (_file == Constants.CONSOLE_FILENAME) { _fileType = FileTypes.Console; } else if (ArchiveSupport.TryGetArchivePath(file, out var archive, out var finalFile) && ArchiveSupport.IsValidArchive(archive)) { _fileType = string.IsNullOrWhiteSpace(finalFile) ? FileTypes.Archive : FileTypes.ArchivedFile; } UpdateFileInfo(); ResetCounters(); }
public FileInfoCache(string archivePath) { var info = ArchiveSupport.GetArchivedFileInfo(archivePath); Length = info.Size; CreationTime = info.CreatedTime; }
public FilesMonitorEntry(string path, TailPbl bl) { if (path == Constants.CONSOLE_FILENAME) { FileType = FileTypes.Console; Folder = string.Empty; Mask = Constants.CONSOLE_FILENAME; } else if (ArchiveSupport.TryGetArchivePath(path, out var archive, out var file)) { FileType = FileTypes.Archive; Folder = archive; Mask = file; }