aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-03-25 16:37:39 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-03-25 16:37:39 +0200
commit065bf199805406d21900e40d314154c92ec8e051 (patch)
tree84c401ca3aa95d25cda019463b8b63275456c937 /Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs
parente094952954ec5b1f643bc42581cfe46be15816e0 (diff)
parent8f57d4962fa84499c8a153ebfff6e7766434ee1c (diff)
downloadTango-065bf199805406d21900e40d314154c92ec8e051.tar.gz
Tango-065bf199805406d21900e40d314154c92ec8e051.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs')
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs56
1 files changed, 48 insertions, 8 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs
index 1f6641f3a..6f25e1774 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileSystem/DefaultFileSystemProvider.cs
@@ -25,7 +25,8 @@ namespace Tango.FSE.UI.FileSystem
private BasicTransporter _webRtcTransporter;
private const string WEB_RTC_CHANNEL_NAME = "FileSystemChannel";
private const long MAX_CHUNK_SIZE = 1024 * 10;
- private const long MAX_CHUNK_SIZE_WEB_RTC = 1024 * 15;
+ private const long MAX_CHUNK_SIZE_WEB_RTC = 1024 * 50;
+ private const int WEB_RTC_MAX_RETRIES = 8;
private List<FileSystemHandler> _activeHandlers;
private bool _enableWebRTC;
@@ -52,7 +53,7 @@ namespace Tango.FSE.UI.FileSystem
_machineProvider.MachineDisconnected += _machineProvider_MachineDisconnected;
}
- private void _machineProvider_MachineDisconnected(object sender, MachineDisconnectedEventArgs e)
+ private async void _machineProvider_MachineDisconnected(object sender, MachineDisconnectedEventArgs e)
{
IsWebRtcAvailable = false;
@@ -69,6 +70,19 @@ namespace Tango.FSE.UI.FileSystem
}
_activeHandlers.Clear();
+
+ if (_webRtcTransporter != null)
+ {
+ try
+ {
+ LogManager.Log("Machine disconnected. Disconnecting FileSystem WebRTC Transporter...");
+ await _webRtcTransporter.Disconnect();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error while disconnecting FileSystem WebRTC Transporter.");
+ }
+ }
}
private async void _machineProvider_MachineConnected(object sender, MachineConnectedEventArgs e)
@@ -100,8 +114,6 @@ namespace Tango.FSE.UI.FileSystem
catch (Exception ex)
{
IsWebRtcAvailable = false;
- EnableWebRTC = false;
-
LogManager.Log(ex, "Error initializing FileSystem via WebRTC.");
}
}
@@ -226,6 +238,7 @@ namespace Tango.FSE.UI.FileSystem
long position = 0;
bool webRtcFailed = false;
+ int webRtcRetries = WEB_RTC_MAX_RETRIES;
var tempFile = TemporaryManager.CreateFile();
@@ -252,18 +265,34 @@ namespace Tango.FSE.UI.FileSystem
try
{
request.MaxChunkSize = MAX_CHUNK_SIZE_WEB_RTC;
- response = await _webRtcTransporter.SendGenericRequest<ChunkDownloadRequest, ChunkDownloadResponse>(request, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(30), Priority = QueuePriority.Low });
+ response = await _webRtcTransporter.SendGenericRequest<ChunkDownloadRequest, ChunkDownloadResponse>(request, new TransportRequestConfig()
+ {
+ Timeout = TimeSpan.FromSeconds(2),
+ Priority = QueuePriority.Low
+ });
+
+ webRtcRetries = WEB_RTC_MAX_RETRIES;
}
catch (Exception ex)
{
- webRtcFailed = true;
- LogManager.Log(ex, "WebRTC chunk download failed. Falling back to standard download...");
+ webRtcRetries--;
+
+ if (webRtcRetries == 0)
+ {
+ webRtcFailed = true;
+ LogManager.Log(ex, "WebRTC chunk download failed. Falling back to standard download...");
+ }
+
continue;
}
}
else
{
- response = await _machineProvider.MachineOperator.SendGenericRequest<ChunkDownloadRequest, ChunkDownloadResponse>(request, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(30), Priority = QueuePriority.Low });
+ response = await _machineProvider.MachineOperator.SendGenericRequest<ChunkDownloadRequest, ChunkDownloadResponse>(request, new TransportRequestConfig()
+ {
+ Timeout = TimeSpan.FromSeconds(30),
+ Priority = QueuePriority.Low
+ });
}
using (FileStream fs = new FileStream(tempFile, FileMode.Append))
@@ -399,5 +428,16 @@ namespace Tango.FSE.UI.FileSystem
Path = item.Path
}, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(120) });
}
+
+ public async Task<FolderItem> CreateFolder(FileSystemItem parent, string folderName)
+ {
+ var response = await _machineProvider.MachineOperator.SendGenericRequest<CreateFolderRequest, CreateFolderResponse>(new CreateFolderRequest()
+ {
+ Path = parent.Path,
+ FolderName = folderName,
+ });
+
+ return FileSystemItem.FromDTO(response.FolderItem) as FolderItem;
+ }
}
}