示例#1
0
        void RenameIndex(ChangedSource changes)
        {
            var isDirectory = IsDirectory(changes.FilePath);

            if (IsExcludedFromIndex(changes.FilePath, isDirectory))
            {
                if (!IsExcludedFromIndex(changes.OldPath, isDirectory))
                {
                    IndexBuilder.DeleteIndex(changes.OldPath);
                }
            }
            else
            {
                if (isDirectory)
                {
                    IndexBuilder.RenameFolderIndexes(changes.OldPath, changes.FilePath, TokenSource.Token);
                }
                else if (IsFile(changes.FilePath))
                {
                    if (IndexBuilder.RenameFileIndex(changes.OldPath, changes.FilePath) == IndexBuildResults.FailedWithIOException)
                    {
                        EnqueueToFailedSource(changes);
                    }
                }
            }
        }
        public void SetUp()
        {
            _file       = new[] { "Console.WriteLine()" };
            _fileWriter = new Mock <ISourceFileWriter>();
            var subject = new ChangedSource(_file, null, _fileWriter.Object);

            subject.WriteAllLines();
        }
示例#3
0
 void UpdateIndex(ChangedSource changes)
 {
     if (IsFile(changes.FilePath))
     {
         if (IndexBuilder.UpdateIndex(new FileInfo(changes.FilePath), TokenSource.Token) == IndexBuildResults.FailedWithIOException)
         {
             EnqueueToFailedSource(changes);
         }
     }
 }
示例#4
0
        void OnRename(object sender, RenamedEventArgs e)
        {
            var changeSource = new ChangedSource
            {
                ChangesType = e.ChangeType,
                FilePath    = e.FullPath,
                OldPath     = e.OldFullPath
            };

            ChangedSources.Enqueue(changeSource);
        }
示例#5
0
        void EnqueueChangeSource(WatcherChangeTypes changeType, string fullPath)
        {
            var changeSource = new ChangedSource
            {
                ChangesType = changeType,
                FilePath    = fullPath
            };

            if (!IsExcludedFromIndex(changeSource.FilePath, changeType))
            {
                ChangedSources.Enqueue(changeSource);
            }
        }
示例#6
0
 void EnqueueToFailedSource(ChangedSource changes)
 {
     if (changes is not PendingRetrySource)
     {
         Log.LogError($"Enqueue failed processing changed source {changes}"); PendingRetryCodeSources.Enqueue(new PendingRetrySource
         {
             ChangesType      = changes.ChangesType,
             FilePath         = changes.FilePath,
             OldPath          = changes.FilePath,
             ChangedUTCDate   = changes.ChangedUTCDate,
             LastRetryUTCDate = DateTime.UtcNow
         });
     }
 }
        public void SetUp()
        {
            _file = new [] { "Console.WriteLine()" };

            _existingLicense = new Mock <ILicense>();
            _existingLicense.Setup(x => x.RemoveFrom(_file)).Returns(_file);

            _newLicense = new Mock <ILicense>();
            _newLicense.Setup(x => x.AddTo(_file)).Returns(_file);

            var subject = new ChangedSource(_file, _existingLicense.Object, null);

            _result = subject.Add(_newLicense.Object);
        }
示例#8
0
        public void TestConstructor()
        {
            var source = new ChangedSource
            {
                ChangedUTCDate = new DateTime(2021, 1, 1),
                ChangesType    = System.IO.WatcherChangeTypes.Renamed,
                FilePath       = "A",
                OldPath        = "B"
            };

            Assert.AreEqual(new DateTime(2021, 1, 1), source.ChangedUTCDate);
            Assert.AreEqual(System.IO.WatcherChangeTypes.Renamed, source.ChangesType);
            Assert.AreEqual("A", source.FilePath);
            Assert.AreEqual("B", source.OldPath);
        }
示例#9
0
 void CreateIndex(ChangedSource changes, IList <ChangedSource> orderedNeedProcessingChanges)
 {
     if (IsFile(changes.FilePath))
     {
         if (IndexBuilder.CreateIndex(new FileInfo(changes.FilePath)) == IndexBuildResults.FailedWithIOException)
         {
             EnqueueToFailedSource(changes);
         }
     }
     else if (IsDirectory(changes.FilePath))
     {
         foreach (var file in Directory.GetFiles(changes.FilePath, "*", SearchOption.AllDirectories).Where(file =>
                                                                                                           orderedNeedProcessingChanges.All(changedSource => !changedSource.FilePath.Equals(file, StringComparison.InvariantCultureIgnoreCase)) &&
                                                                                                           ChangedSources.All(changedSource => !changedSource.FilePath.Equals(file, StringComparison.InvariantCultureIgnoreCase))))
         {
             Log.LogInformation($"{IndexConfig.IndexName}: Enqueue File {file} Created to changes source");
             EnqueueChangeSource(WatcherChangeTypes.Created, file);
         }
     }
 }
示例#10
0
 void DeleteIndex(ChangedSource changes)
 {
     IndexBuilder.DeleteIndex(changes.FilePath);
 }
 public ValueTask <Boolean> DoAsync(String value)
 {
     return(ChangedSource.InvokeAsync(value));
 }
 public Boolean Do(String value)
 {
     return(ChangedSource.Invoke(value));
 }
 public DataChangedEventArgs(IEnumerable<string> primaryKeys, ChangedSource source)
 {
     PrimaryKeys = new List<string>(primaryKeys);
     Source = source;
 }