Beispiel #1
0
        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);
     }
 }