Esempio n. 1
0
        /// <summary>
        /// Rename item handling
        /// </summary>
        private void OnRenamed(object source, RenamedEventArgs e)
        {
            // Check if file has allowed name
            if (!FileHelper.IsAllowedFilename(e.Name))
            {
                return;
            }

            // Find if renamed from/to temporary file
            var renamedFromTempFile = new FileInfo(e.OldFullPath).Attributes.HasFlag(FileAttributes.Temporary);
            var renamedToTempFile   = new FileInfo(e.FullPath).Attributes.HasFlag(FileAttributes.Temporary);

            // Add to queue if not temporary file
            if (!renamedFromTempFile || renamedToTempFile)
            {
                return;
            }

            var toSync = new SyncQueueItem
            {
                Name        = e.Name,
                OldName     = e.OldName,
                FullPath    = e.FullPath,
                OldFullPath = e.OldFullPath,
                ChangeType  = WatcherChangeTypes.Renamed,
                Md5         = MyMd5.CalcMd5(e.FullPath),
                SyncTo      = ToSync.ToFtp
            };

            SyncQueue.Add(toSync, false);
            //else
            //  AddToQueue(e, WatcherChangeTypes.Changed);
        }
Esempio n. 2
0
 /// <summary>
 /// Delete item handling
 /// </summary>
 private void OnDeleted(object source, FileSystemEventArgs e)
 {
     // Add to queue
     SyncQueue.Add(new SyncQueueItem {
         Name = e.Name, FullPath = e.FullPath, ChangeType = e.ChangeType
     }, false);
 }
Esempio n. 3
0
        /// <summary>
        /// Change event handling
        /// </summary>
        private void OnChanged(object source, FileSystemEventArgs e)
        {
            // Check if there is file and directory else return
            if ((!File.Exists(e.FullPath) && !Directory.Exists(e.FullPath)))
            {
                return;
            }

            // Check if file has allowed name
            if (!FileHelper.IsAllowedFilename(e.Name))
            {
                return;
            }

            var retries = 0;

            if (File.Exists(e.FullPath))
            {
                // avoid queuing the same file multiple times
                while (true)
                {
                    // Check if file is used
                    if (!FileHelper.FileIsUsed(e.FullPath))
                    {
                        break;
                    }
                    // Exit after 5 retries
                    if (retries > 5)
                    {
                        return;
                    }
                    // Sleep for a 10th of a second, then check again
                    Thread.Sleep(100);
                    retries++;
                }
            }
            // Add to queue
            var actionType = e.ChangeType == WatcherChangeTypes.Changed ? WatcherChangeTypes.Changed : WatcherChangeTypes.Created;

            var toSync = new SyncQueueItem
            {
                Name       = e.Name,
                FullPath   = e.FullPath,
                ChangeType = actionType,
                Md5        = MyMd5.CalcMd5(e.FullPath),
                SyncTo     = ToSync.ToFtp
            };

            SyncQueue.Add(toSync, false);
        }