aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-16 14:32:39 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-16 14:32:39 +0200
commitadabe4e1b99bc57f0381fb0a5bb3192ac0fdff18 (patch)
treeadfce075209485fb449af343b1b7877d02b93e64 /Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem
parentb188d7bfd91062f65474bd139bb8a434694f117b (diff)
downloadTango-adabe4e1b99bc57f0381fb0a5bb3192ac0fdff18.tar.gz
Tango-adabe4e1b99bc57f0381fb0a5bb3192ac0fdff18.zip
Working on FSE/PPC FileSystem Provider/Service.
Diffstat (limited to 'Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem')
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs85
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerStatus.cs18
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerType.cs17
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/IFileSystemProvider.cs19
4 files changed, 139 insertions, 0 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
new file mode 100644
index 000000000..1b1e5f747
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
@@ -0,0 +1,85 @@
+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();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerStatus.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerStatus.cs
new file mode 100644
index 000000000..fe3a030a1
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerStatus.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.FSE.Common.FileSystem
+{
+ public enum FileSystemHandlerStatus
+ {
+ Pending,
+ Downloading,
+ Uploading,
+ Failed,
+ Aborted,
+ Completed
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerType.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerType.cs
new file mode 100644
index 000000000..4c60cb828
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandlerType.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.FSE.Common.FileSystem
+{
+ public enum FileSystemHandlerType
+ {
+ FileDownload,
+ FileUpload,
+ FolderDownload,
+ FolderUpload
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/IFileSystemProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/IFileSystemProvider.cs
new file mode 100644
index 000000000..16099963b
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/IFileSystemProvider.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.FileSystem;
+using static System.Environment;
+
+namespace Tango.FSE.Common.FileSystem
+{
+ public interface IFileSystemProvider
+ {
+ Task<IFileSystemContainer> GetFolder(String path);
+ Task<IFileSystemContainer> GetSpecialFolder(SpecialFolder specialFolder);
+ Task<IFileSystemContainer> GetThisPC();
+ Task<FileSystemHandler> Download(FileSystemItem item, String targetFolderPath);
+ Task<FileSystemHandler> Upload(String sourcePath, String targetPath);
+ }
+}