示例#1
0
        public MirrorFolders(bool localIsMaster, RecursionMode recursive, bool syncDateTime, int comparisonMethod, bool checkForResumability, string searchPattern)
        {
            InitializeComponent();

            rbtLocalMaster.Checked          = localIsMaster;
            rbtRemoteMaster.Checked         = !localIsMaster;
            chkRecursive.Checked            = recursive == RecursionMode.RecurseIntoAllSubFolders;
            chkSyncDateTime.Checked         = syncDateTime;
            cbxComparisonType.SelectedIndex = comparisonMethod;
            chkResumability.Checked         = checkForResumability;
            txtSearchPattern.Text           = searchPattern;
        }
        public SynchronizeFolders(RecursionMode recursive, bool syncDateTime, bool syncAttributes, int comparisonMethod, bool checkForResumability, string searchPattern, string sourceDir)
        {
            InitializeComponent();

            chkRecursive.Checked            = recursive == RecursionMode.RecurseIntoAllSubFolders;
            chkUpdateTime.Checked           = syncDateTime;
            chkUpdateAttributes.Checked     = syncAttributes;
            cbxComparisonType.SelectedIndex = comparisonMethod;
            chkResumability.Checked         = checkForResumability;
            txtSearchPattern.Text           = searchPattern;
            txtSourceDir.Text = sourceDir;
        }
示例#3
0
        void LeaveRecursive(RecursionMode leavingMode)
        {
            _recursionDepth--;

            if (_recursionDepth == 0)
            {
                // Leave the data as it is, we'll use it for the next call
                _mode = RecursionMode.Idle;
            }
            else
            {
                // We need to restore the previous data
                _instanceDataPool.ReturnObject(InstanceData);
                InstanceData = _recursionStack.Pop();
            }
        }
示例#4
0
        void EnterRecursive(RecursionMode enteringMode)
        {
            _recursionDepth++;

            if (_recursionDepth == 1)
            {
                // First level, just use the existing data block
                _mode = enteringMode;
            }
            else
            {
                if (_mode != enteringMode)
                {
                    throw new InvalidOperationException("Cannot start a serialization call while a deserialization is still in progress (and vice versa)");
                }

                // Next level of recursion
                _recursionStack.Push(InstanceData);
                InstanceData = _instanceDataPool.RentObject();
            }
        }
示例#5
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            UpdatePermissions();

            _recursive = chkRecursive.Checked ? RecursionMode.RecurseIntoAllSubFolders : RecursionMode.None;
        }
示例#6
0
        /// <summary>
        /// Enumerates the file system infos.
        /// </summary>
        /// <param name="This">This DirectoryInfo.</param>
        /// <param name="mode">The recursion mode.</param>
        /// <param name="recursionFilter">The filter to use for recursing into sub-directories (Walks on <c>true</c>; otherwise, skips recursion).</param>
        /// <returns>
        /// The FileSystemInfos
        /// </returns>
        /// <exception cref="System.NotSupportedException">RecursionMode</exception>
        public static IEnumerable <FileSystemInfo> EnumerateFileSystemInfos(this DirectoryInfo This, RecursionMode mode, Func <DirectoryInfo, bool> recursionFilter = null)
        {
            switch (mode)
            {
            case RecursionMode.ToplevelOnly: {
#if NET40
                foreach (var result in This.EnumerateFileSystemInfos())
#else
                foreach (var result in This.GetFileSystemInfos())
#endif
                { yield return(result); }

                break;
            }

            case RecursionMode.ShortestPathFirst: {
                var results = new Queue <DirectoryInfo>();
                results.Enqueue(This);
                while (results.Any())
                {
                    var result = results.Dequeue();
#if NET40
                    foreach (var fsi in result.EnumerateFileSystemInfos())
                    {
#else
                    foreach (var fsi in result.GetFileSystemInfos())
                    {
#endif
                        yield return(fsi);

                        var di = fsi as DirectoryInfo;
                        if (di == null)
                        {
                            continue;
                        }

                        if (recursionFilter == null || recursionFilter(di))
                        {
                            results.Enqueue(di);
                        }
                    }
                }
                break;
            }

            case RecursionMode.DeepestPathFirst: {
                var results = new Stack <DirectoryInfo>();
                results.Push(This);
                while (results.Any())
                {
                    var result = results.Pop();
#if NET40
                    foreach (var fsi in result.EnumerateFileSystemInfos())
                    {
#else
                    foreach (var fsi in result.GetFileSystemInfos())
                    {
#endif
                        yield return(fsi);

                        var di = fsi as DirectoryInfo;
                        if (di == null)
                        {
                            continue;
                        }

                        if (recursionFilter == null || recursionFilter(di))
                        {
                            results.Push(di);
                        }
                    }
                }
                break;
            }

            default: {
                throw new NotSupportedException(nameof(RecursionMode));
            }
            }
        }
示例#7
0
 public TriggersContextOptionsBuilder RecursionMode(RecursionMode recursionMode = Infrastructure.RecursionMode.EntityAndType)
 => WithOption(e => e.WithRecursionMode(recursionMode));