diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-01-15 21:13:45 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-01-15 21:13:45 +0200 |
| commit | 8d1933f305e8fb4aa4cc7633fa02c419d77766ff (patch) | |
| tree | 780c92eda81022afe1dca6838416ab44480776bf /Software/Visual_Studio/Tango.Transport | |
| parent | 7b5a8bd0e4dbe8f1955a06c720380760ccb67ebd (diff) | |
| download | Tango-8d1933f305e8fb4aa4cc7633fa02c419d77766ff.tar.gz Tango-8d1933f305e8fb4aa4cc7633fa02c419d77766ff.zip | |
External bridge improvements.
Diffstat (limited to 'Software/Visual_Studio/Tango.Transport')
| -rw-r--r-- | Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs b/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs index 6e1f60232..2324e140c 100644 --- a/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs +++ b/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs @@ -96,18 +96,34 @@ namespace Tango.Transport.Adapters { if (State != TransportComponentState.Connected) { + bool completed = false; + TaskCompletionSource<object> completionSource = new TaskCompletionSource<object>(); _connection = new HubConnection(Address); _proxy = _connection.CreateHubProxy(Hub); + Core.Threading.TimeoutTask.StartNew(() => + { + if (!completed) + { + completed = true; + completionSource.SetException(new TimeoutException("Could not connect the SignalR adapter.")); + } + + }, TimeSpan.FromSeconds(5)); + if (Mode == SignalRTransportAdapterMode.CreateSession) { _proxy.On("SessionCreated", () => { - State = TransportComponentState.Connected; - _pushThread.Start(); - completionSource.SetResult(true); + if (!completed) + { + completed = true; + State = TransportComponentState.Connected; + _pushThread.Start(); + completionSource.SetResult(true); + } }); } @@ -126,9 +142,13 @@ namespace Tango.Transport.Adapters if (Mode == SignalRTransportAdapterMode.JoinSession) { - State = TransportComponentState.Connected; - _pushThread.Start(); - completionSource.SetResult(true); + if (!completed) + { + completed = true; + State = TransportComponentState.Connected; + _pushThread.Start(); + completionSource.SetResult(true); + } } } }; @@ -153,8 +173,11 @@ namespace Tango.Transport.Adapters { return Task.Factory.StartNew(() => { - _connection.Stop(); - _connection.Dispose(); + Core.Threading.TimeoutTask.StartNew(() => + { + _connection.Stop(); + _connection.Dispose(); + },TimeSpan.FromSeconds(5)); State = TransportComponentState.Disconnected; }); } |
