示例#1
0
        private void IngestCore(CleanupIngestResult result, string src, string target)
        {
            _cancellationToken.ThrowIfCancellationRequested();
            foreach (var dir in Directory.EnumerateDirectories(target, "*", SearchOption.TopDirectoryOnly))
            {
                _cancellationToken.ThrowIfCancellationRequested();
                var srcPath = Path.Combine(src, new DirectoryInfo(dir).Name);
                if (!Directory.Exists(srcPath))
                {
                    _cleanupQueue.Enqueue(new CleanupInfo(result.SyncConfig)
                    {
                        FullPath = dir,
                        IsFile   = false
                    });
                }

                IngestCore(result, srcPath, dir);
            }

            foreach (var file in Directory.EnumerateFiles(target, "*", SearchOption.TopDirectoryOnly))
            {
                _cancellationToken.ThrowIfCancellationRequested();
                var srcPath = Path.Combine(src, Path.GetFileName(file));
                if (!File.Exists(srcPath))
                {
                    _cleanupQueue.Enqueue(new CleanupInfo(result.SyncConfig)
                    {
                        FullPath = file,
                        IsFile   = true
                    });
                }
            }
        }
示例#2
0
        public async Task <CleanupIngestResult> IngestAsync(SyncConfig syncConfig)
        {
            var result = new CleanupIngestResult(syncConfig);
            await Task.Run(() => { IngestCore(result, syncConfig.Source, syncConfig.Target); }, _cancellationToken);

            return(result);
        }