public RollingFileReader(string baseFileName, IFilePositionStore store, ReadBehaviour readBehaviour) { //TODO UNCs are not allowed _store = store; BaseFileName = baseFileName; switch (readBehaviour) { case ReadBehaviour.FromBeginning: _position = new FilePosition(new FileId(baseFileName, DateTime.MinValue), 0); break; case ReadBehaviour.FromWhereLeft: _position = _store.GetPosition(baseFileName); if (_position == null) { _position = new FilePosition(new FileId(baseFileName, DateTime.MinValue), 0); } break; case ReadBehaviour.FromCurrentPos: var fileInfo = new FileInfo(baseFileName); //TODO what if not there?? var fileId = new FileId(baseFileName, fileInfo.LastWriteTimeUtc); long pos = fileInfo.Length; _position = new FilePosition(fileId, pos); break; default: throw new NotSupportedException("Unsupported ReadBehaviour"); } FileStream = OpenFileStream(_position); }
public RollingFileTextReaderManager(string pattern, IFilePositionStore store, ReadBehaviour readBehaviour, Func <string, string, bool> func) { _positionStore = store; _knownFiles = new Dictionary <string, TimeBasedPollerForLineReader>(); _readBehaviour = readBehaviour; _func = func; _fileWatcher = new FileWatcher(pattern, OnNewFile); foreach (var file in Search.FindFiles(pattern)) { OnNewFile(file); } }
public RollingFileReaderManager(string pattern, IFilePositionStore store, ReadBehaviour readBehaviour, IOutputProvider outputProvider) { _positionStore = store; _knownFiles = new Dictionary <string, TimeBasedPoller>(); _readBehaviour = readBehaviour; _outputProvider = outputProvider; _fileWatcher = new FileWatcher(pattern, OnNewFile); foreach (var file in Search.FindFiles(pattern)) { OnNewFile(file); } }