aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Transport
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-02-10 13:33:02 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-02-10 13:33:02 +0200
commit35cef16ffc96b06f68f122361ea84030169bb730 (patch)
tree1cd239e14c8ab6733ac7225e4b39bdd282c83a9f /Software/Visual_Studio/Tango.Transport
parent1ae720e9052b2419200c113ad1fa42550382e6c7 (diff)
downloadTango-35cef16ffc96b06f68f122361ea84030169bb730.tar.gz
Tango-35cef16ffc96b06f68f122361ea84030169bb730.zip
Some fixes on transport layer.
Fix on machine operator upgrade firmware.. Fix on SessionFileLogger. Fix on PPC jobs view. Fix on Tech Catalog View.
Diffstat (limited to 'Software/Visual_Studio/Tango.Transport')
-rw-r--r--Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj2
-rw-r--r--Software/Visual_Studio/Tango.Transport/TransportAdapterBase.cs7
-rw-r--r--Software/Visual_Studio/Tango.Transport/TransporterBase.cs67
3 files changed, 50 insertions, 26 deletions
diff --git a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
index 066faea91..260a1e4f7 100644
--- a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
+++ b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
@@ -181,7 +181,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Transport/TransportAdapterBase.cs b/Software/Visual_Studio/Tango.Transport/TransportAdapterBase.cs
index b3310a600..d17bde261 100644
--- a/Software/Visual_Studio/Tango.Transport/TransportAdapterBase.cs
+++ b/Software/Visual_Studio/Tango.Transport/TransportAdapterBase.cs
@@ -91,8 +91,11 @@ namespace Tango.Transport
get { return _state; }
protected set
{
- _state = value;
- OnStateChanged(_state);
+ if (_state != value)
+ {
+ _state = value;
+ OnStateChanged(_state);
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.Transport/TransporterBase.cs b/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
index aec7654b1..70feb05f6 100644
--- a/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
+++ b/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
@@ -244,12 +244,41 @@ namespace Tango.Transport
/// Called when the component has failed.
/// </summary>
/// <param name="ex">The ex.</param>
- protected virtual void OnFailed(Exception ex)
+ protected virtual async void OnFailed(Exception ex)
{
- FailedStateException = ex;
- State = TransportComponentState.Failed;
- LogManager.Log(ex, $"{GetExtendedComponentName()}: Transporter failed.");
- Disconnect().Wait();
+ if (State != TransportComponentState.Failed)
+ {
+ FailedStateException = ex;
+ LogManager.Log(ex, $"{GetExtendedComponentName()}: Transporter failed.");
+ State = TransportComponentState.Failed;
+
+ await OnPostDisconnection();
+ }
+ else
+ {
+ LogManager.Log(ex, LogCategory.Warning, $"{GetExtendedComponentName()}: OnFailed called while state is already failed!");
+ }
+ }
+
+ protected virtual async Task OnPostDisconnection()
+ {
+ try
+ {
+ if (_pullThread != null)
+ {
+ _pullThread.Abort();
+ _pushThread.Abort();
+ _keepAliveThread.Abort();
+ }
+ }
+ catch { }
+
+ if (Adapter != null)
+ {
+ await Adapter.Disconnect();
+ }
+
+ NotifyContinuousRequestMessagesDisconnection();
}
/// <summary>
@@ -419,26 +448,14 @@ namespace Tango.Transport
/// <returns></returns>
public virtual async Task Disconnect()
{
- State = TransportComponentState.Disconnected;
-
- try
+ if (State == TransportComponentState.Connected)
{
- if (_pullThread != null)
- {
- _pullThread.Abort();
- _pushThread.Abort();
- _keepAliveThread.Abort();
- }
- }
- catch { }
+ State = TransportComponentState.Disconnected;
- if (Adapter != null)
- {
- await Adapter.Disconnect();
- }
- LogManager.Log($"{GetExtendedComponentName()}: Transporter Disconnected...");
+ await OnPostDisconnection();
- NotifyContinuousRequestMessagesDisconnection();
+ LogManager.Log($"{GetExtendedComponentName()}: Transporter Disconnected...");
+ }
}
#endregion
@@ -1352,7 +1369,11 @@ namespace Tango.Transport
if (container.Type == MessageType.KeepAliveRequest && EnableKeepAliveAutoResponse)
{
LogManager.Log($"{GetExtendedComponentName()}: Submitting keep alive response...", LogCategory.Debug);
- SendResponse<KeepAliveResponse>(new KeepAliveResponse(), container.Token);
+ try
+ {
+ SendResponse<KeepAliveResponse>(new KeepAliveResponse(), container.Token);
+ }
+ catch { }
}
else
{