Example #1
0
        public int Execute()
        {
            var synchronizer = new FileSystemSynchronizer
                                   {
                                       SynchArchiveFile = Archive,
                                       SynchDiffLastWriteTimeFile = LastWriteTime,
                                       SynchDiffLengthFile = Length,
                                   };

            using (FileContinueWorkFactory continueWorkFactory = CreateContinueWorkFactory())
            {
                var fileCopy = new StreamFileCopy();
                fileCopy.ProcessChanged += fileCopy_ProcessChanged;
                fileCopy.CopyAttribute = true;
                fileCopy.CopyCreationTime = true;
                fileCopy.CopyLastAccessTime = true;
                fileCopy.CopyLastWriteTime = true;
                fileCopy.BufferSize = 1024 * 1024 * 4;
                fileCopy.ContinueWorkFactory = continueWorkFactory;
                synchronizer.FileSynchronizer = fileCopy;
                synchronizer.ValidateDirectory += synchronizer_ValidateDirectory;
                FileSystemSynchronizer.StatResult result = synchronizer.Stat(new DirectoryInfo(Source),
                                                                             new DirectoryInfo(Destination));

                synchronizer.Synchronize(result, DeleteFileCallback, DeleteDirectoryCallback,
                                         CreateDirectoryCallback, CopyFileCallback);
                return 0;
            }
        }
        public void When_Synced_One_Way()
        {
            var instance = new FileSystemSynchronizer(MockChangeDetector.Object, MockUpdater.Object);

            bool iterationComplete = false;

            instance.IterationCompleted += delegate(object sender, EventArgs args)
            {
                iterationComplete = true;
            };

            instance.Start(MockSource.Object, MockDestination.Object,
                new SyncronizationOptions()
                {
                    ConflictBehavior = ConflictBehavior.Skip,
                    PollingInterval = TimeSpan.FromMilliseconds(10),
                    SyncDirection = SyncDirection.OneWay,
                    SearchOption = SearchOption.AllDirectories
                }
            );

            while (!iterationComplete)
                Thread.SpinWait(10);
        }