Esempio n. 1
0
        /// <summary>
        /// Производит операцию над файлом, согласно назначению класса.
        /// </summary>
        /// <param name="fileTransferInfo">Информация о классе.</param>
        /// <returns>Обработанный класс.</returns>
        protected override FileTransferInfo DetailedProc(FileTransferInfo fileTransferInfo)
        {
            try
            {
                string directory = _settings[ArgsKeyList.BackUpPath];
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }
                var oldFile = $"{_settings[ArgsKeyList.StorePath]}\\{fileTransferInfo.Id}";
                var newFile = $"{directory}\\{fileTransferInfo.Id};{fileTransferInfo.PpvkName}.{fileTransferInfo.Ext}";
                if (File.Exists(oldFile))
                {
                    File.Copy(oldFile, newFile);
                }
                else
                {
                    File.WriteAllBytes(newFile, fileTransferInfo.Data);
                }

                return(fileTransferInfo);
            }
            catch (Exception e)
            {
                _console.AddException(e);
                return(null);
            }
        }
Esempio n. 2
0
 public PpvkFileInfo(FileTransferInfo fileTransferInfo)
 {
     Id             = fileTransferInfo.Id;
     PpvkName       = fileTransferInfo.PpvkName;
     Extention      = fileTransferInfo.Ext;
     FindAtPpvkTime = DateTime.Parse(fileTransferInfo.FindAtPpvkTime);
     ReciveFileTime = DateTime.Parse(fileTransferInfo.ReciveFileTime);
     SaveToDbTime   = DateTime.Parse(fileTransferInfo.SaveToDbTime);
 }
Esempio n. 3
0
        public override IEnumerable <FileTransferInfo> LoadFiles()
        {
            var list             = new List <FileTransferInfo>();
            FileTransferInfo fti = null;

            try
            {
                while (_consumer.TryTake(out fti) &&
                       CancelationToken == WorkFlowCancelationToken.Started)
                {
                    var buf = DetailedProc(fti);
                    if (buf != null)
                    {
                        list.Add(buf);
                    }
                }

                return(list);
            }
            catch (Exception e)
            {
                _console.AddException(e);

                #region Return to parrent queue

                // Если возникла ошибка, ошибочный экземляр вернётся.
                if (fti != null)
                {
                    _consumer.TryAdd(fti);
                    _console.AddEvent($"Maybe corrupted: {fti}", ConsoleMessageType.Trace);
                }

                // Также при ошибке возращаются вся обработанная часть.
                if (list.Count > 0)
                {
                    list.ForEach(item => _queue.TryAdd(item));
                }

                #endregion

                return(null);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Производит операцию над файлом, согласно назначению класса.
 /// </summary>
 /// <param name="fileTransferInfo">Информация о классе.</param>
 /// <returns>Обработанный класс.</returns>
 protected override FileTransferInfo DetailedProc(FileTransferInfo fileTransferInfo)
 {
     try
     {
         string directory = _settings[ArgsKeyList.ScanPath];
         if (!Directory.Exists(directory))
         {
             return(fileTransferInfo);
         }
         File.Delete($"{directory}\\{fileTransferInfo.Id}{fileTransferInfo.Ext}");
         fileTransferInfo.Size = -1;
         return(fileTransferInfo);
     }
     catch (Exception e)
     {
         _console.AddException(e);
         return(null);
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Производит операцию над файлом, согласно назначению класса.
 /// </summary>
 /// <param name="fileTransferInfo">Информация о классе.</param>
 /// <returns>Обработанный класс.</returns>
 protected override FileTransferInfo DetailedProc(FileTransferInfo fileTransferInfo)
 {
     return(null);
 }