Example #1
0
        /// <summary>
        /// Reflects directory structure of observed files and directories
        /// </summary>
        /// <param name="watcher">Raises events on file system changes</param>
        /// <param name="sequentialId">Used to generate identifiers to track file content</param>
        /// <param name="systemFileNameFilter">A deterministic function to limit the observed scope</param>
        public Mirror(
            Watcher watcher,
            SequentialId sequentialId,
            FileNameFilter systemFileNameFilter = null)
        {
            _watcher = watcher;
            _watcher.ChangeDetected += changeDetected;
            _watcher.Error          += watcherError;

            _fileNameFilter = systemFileNameFilter ?? (fullFileName => true);
            _sequentialId   = sequentialId;

            _root = new RootEntry <Metadata>(() => new Metadata(SequentialId.None));

            _createdEntriesQueue.Enqueued += (sender, entry) => EnqueuedCreatedEntry?.Invoke(this, entry);
            _deletedEntriesQueue.Enqueued += (sender, entry) => EnqueuedDeletedEntry?.Invoke(this, entry);
            _movedEntriesQueue.Enqueued   += (sender, entry) => EnqueuedMovedEntry?.Invoke(this, entry);
        }
Example #2
0
 protected Entry(RootEntry <TData> root)
 {
     Root = root;
 }
Example #3
0
 public DirectoryEntry(RootEntry <TData> root) : base(root)
 {
 }