public void Purge(int taskID, LITEConnection connection)
        {
            Connection = connection;
            var taskInfo = $"task: {taskID}";

            var profile = _profileStorage.Current;

            //purge temp
            Directory.CreateDirectory(Connection.resourcePath);
            _logger.Log(LogLevel.Debug, $"{taskInfo} Purging {Connection.resourcePath}");

            var resources = _util.DirSearch(Connection.resourcePath, "*.*");

            foreach (var file in resources)
            {
                try
                {
                    PurgeFile(profile, file, taskInfo);
                }
                catch (Exception e)
                {
                    _logger.LogFullException(e);
                }
            }

            _util.CleanUpDirectory(Connection.resourcePath);
        }
Пример #2
0
        private void PurgeInPath(FileConnection Connection, string taskInfo)
        {
            Throw.IfNull(Connection);

            if (Connection.inout != InOut.both && Connection.inout != InOut.inbound || Connection.inpath == null)
            {
                return;
            }

            Directory.CreateDirectory(Connection.inpath);

            _logger.Log(LogLevel.Debug, $"{taskInfo} Purging inpath: {Connection.inpath}");

            var files = _util.DirSearch(Connection.inpath, "*.*");

            foreach (var file in files)
            {
                var attr = File.GetAttributes(file);
                if (attr.HasFlag(FileAttributes.Hidden))
                {
                    _logger.Log(LogLevel.Debug, $"{taskInfo} Deleting hidden file {file}.");
                    File.Delete(file); //delete hidden files like .DS_Store
                    continue;
                }

                var lastwritetime  = File.GetLastWriteTime(file);
                var lastaccesstime = File.GetLastAccessTime(file);
                var creationtime   = File.GetCreationTime(file);

                var purgetime = DateTime.Now.AddHours(Connection.inpathRetentionHours * -1);
                if (lastwritetime.CompareTo(purgetime) < 0 &&
                    lastaccesstime.CompareTo(purgetime) < 0 &&
                    creationtime.CompareTo(purgetime) < 0)
                {
                    _logger.Log(LogLevel.Debug, $"Purging: {file}");
                    File.Delete(file);
                }
            }

            _util.CleanUpDirectory(Connection.inpath);
        }
        private void PurgeImpl(Profile profile, string taskInfo)
        {
            //purge temp
            Directory.CreateDirectory(profile.tempPath);
            _logger.Log(LogLevel.Debug, $"{taskInfo} Purging {profile.tempPath}");

            var files = _util.DirSearch(profile.tempPath, "*.*");

            foreach (var file in files)
            {
                try
                {
                    ProcessFile(profile, file, taskInfo);
                }
                catch (Exception e)
                {
                    _logger.LogFullException(e);
                }
            }

            _util.CleanUpDirectory(profile.tempPath);
        }