Esempio n. 1
0
        public virtual void Verify()
        {
            if (IsVerified || (_mediaStatus == TMediaStatus.Copying) || (_mediaStatus == TMediaStatus.CopyPending || _mediaStatus == TMediaStatus.Required))
            {
                return;
            }
            if (_directory != null && System.IO.Directory.Exists(_directory.Folder) && !File.Exists(FullPath))
            {
                _mediaStatus = TMediaStatus.Deleted;
                return; // in case that no file was found, and directory exists
            }
            try
            {
                FileInfo fi = new FileInfo(FullPath);
                if (fi.Length == 0L)
                {
                    return;
                }
                if ((MediaType != TMediaType.Animation)
                    &&
                    (MediaStatus == TMediaStatus.Unknown ||
                     MediaStatus == TMediaStatus.Deleted ||
                     MediaStatus == TMediaStatus.Copied ||
                     (MediaType != TMediaType.Still && Duration == TimeSpan.Zero) ||
                     FileSize != (UInt64)fi.Length ||
                     !LastUpdated.DateTimeEqualToDays(fi.LastWriteTimeUtc)
                    ))
                {
                    FileSize    = (UInt64)fi.Length;
                    LastUpdated = DateTimeExtensions.FromFileTime(fi.LastWriteTimeUtc, DateTimeKind.Utc);
                    //this.LastAccess = DateTimeExtensions.FromFileTime(fi.LastAccessTimeUtc, DateTimeKind.Utc);

                    if (SetField(ref _mediaStatus, MediaChecker.Check(this), nameof(MediaStatus)))
                    {
                        _directory?.OnMediaVerified(this);
                    }
                }
                IsVerified = true;
            }
            catch (Exception e)
            {
                Logger.Error(e, "Verify {0} exception", this);
                Debug.WriteLine(e);
            }
        }