diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-10 13:33:02 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-10 13:33:02 +0200 |
| commit | 35cef16ffc96b06f68f122361ea84030169bb730 (patch) | |
| tree | 1cd239e14c8ab6733ac7225e4b39bdd282c83a9f /Software/Visual_Studio/Tango.Transport | |
| parent | 1ae720e9052b2419200c113ad1fa42550382e6c7 (diff) | |
| download | Tango-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')
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 { |
