using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core; namespace Tango.FSE.Common.FileSystem { public class FileSystemHandler : ExtendedObject { private Action _abortAction; public FileSystemHandlerType Type { get; set; } private FileSystemHandlerStatus _status; public FileSystemHandlerStatus Status { get { return _status; } set { if (_status != value) { _status = value; RaisePropertyChangedAuto(); } } } private double _position; public double Position { get { return _position; } set { _position = value; RaisePropertyChangedAuto(); } } private double _length; public double Length { get { return _length; } set { _length = value; RaisePropertyChangedAuto(); } } private Exception _failedException; public Exception FailedException { get { return _failedException; } set { _failedException = value; RaisePropertyChangedAuto(); } } public String Name { get; set; } public String Destination { get; set; } public FileSystemHandler(String name, String destination, Action abortAction) { Name = name; Destination = destination; _abortAction = abortAction; } internal void InvalidateProgress(double position, double length) { Position = position; Length = length; Status = (Type == FileSystemHandlerType.FileDownload || Type == FileSystemHandlerType.FolderDownload) ? FileSystemHandlerStatus.Downloading : FileSystemHandlerStatus.Uploading; } internal void RaiseFailed(Exception exception) { Status = FileSystemHandlerStatus.Failed; FailedException = exception; } internal void RaiseCompleted() { Status = FileSystemHandlerStatus.Completed; } public void Abort() { Status = FileSystemHandlerStatus.Aborted; _abortAction?.Invoke(); } } }