diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-08-22 05:15:57 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-08-22 05:15:57 +0300 |
| commit | a9b1c4cb5c4d945565e72e80ac0f938a49da3e5f (patch) | |
| tree | 739307651882bce538653dc76c58c546b2d87699 /Software/Visual_Studio/Tango.WebRTC | |
| parent | 7bd70fcb311c808b65b62e774755dcbd6b0d63cd (diff) | |
| download | Tango-a9b1c4cb5c4d945565e72e80ac0f938a49da3e5f.tar.gz Tango-a9b1c4cb5c4d945565e72e80ac0f938a49da3e5f.zip | |
Implemented pre-connection protocol configuration.
Improved error handling across transport layer.
Improved unexpected app crash for PPC.
Improved transporter request received handlers tunneling.
Diffstat (limited to 'Software/Visual_Studio/Tango.WebRTC')
| -rw-r--r-- | Software/Visual_Studio/Tango.WebRTC/WebRtcTransportAdapter.cs | 87 |
1 files changed, 54 insertions, 33 deletions
diff --git a/Software/Visual_Studio/Tango.WebRTC/WebRtcTransportAdapter.cs b/Software/Visual_Studio/Tango.WebRTC/WebRtcTransportAdapter.cs index d6431fe60..59784fa56 100644 --- a/Software/Visual_Studio/Tango.WebRTC/WebRtcTransportAdapter.cs +++ b/Software/Visual_Studio/Tango.WebRTC/WebRtcTransportAdapter.cs @@ -95,7 +95,7 @@ namespace Tango.WebRTC { if (!completed) { - LogManager.Log("WebRTC Active Transport Adapter is ready."); + LogManager.Log($"{ComponentName}: WebRTC Active Transport Adapter is ready."); completed = true; State = TransportComponentState.Connected; completionSource.SetResult(true); @@ -104,32 +104,32 @@ namespace Tango.WebRTC if (Mode == WebRtcTransportAdapterMode.Passive) { - LogManager.Log("WebRTC Passive Transport Adapter is ready."); + LogManager.Log($"{ComponentName}: WebRTC Passive Transport Adapter is ready."); Ready?.Invoke(this, new EventArgs()); } }; - LogManager.Log("Initializing WebRTC client..."); + LogManager.Log($"{ComponentName}: Initializing WebRTC client..."); await _client.Init(); if (Mode == WebRtcTransportAdapterMode.Active) { - LogManager.Log("Creating WebRTC offer..."); + LogManager.Log($"{ComponentName}: Creating WebRTC offer..."); var offer = await _client.CreateOffer(); - LogManager.Log("Sending WebRTC offer via signaling transporter..."); + LogManager.Log($"{ComponentName}: Sending WebRTC offer via signaling transporter..."); var response = await SignalingTransporter.SendGenericRequest<OfferRequest, OfferResponse>(new OfferRequest() { Offer = offer }, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(30), }); - LogManager.Log("WebRTC offer sent and responded with an answer. Setting WebRTC answer..."); + LogManager.Log($"{ComponentName}: WebRTC offer sent and responded with an answer. Setting WebRTC answer..."); _client.SetAnswer(response.Answer); _answerReceived = true; foreach (var ice in _queuedIceCandidates.ToList()) { - LogManager.Log($"Sending existing ice candidate '{ice.Sdp}'..."); + LogManager.Log($"{ComponentName}: Sending existing ice candidate '{ice.Sdp}'..."); try { @@ -140,13 +140,13 @@ namespace Tango.WebRTC } catch (Exception ex) { - LogManager.Log(ex, "Error sending ice candidate."); + LogManager.Log(ex, $"{ComponentName}: Error sending ice candidate."); } } } else { - LogManager.Log("Waiting for offer..."); + LogManager.Log($"{ComponentName}: Waiting for offer..."); State = TransportComponentState.Connected; if (!completed) @@ -195,8 +195,22 @@ namespace Tango.WebRTC { if (EnableCompression) { - var decompressed = GZipHelper.Decompress(e.Data); - OnDataAvailable(decompressed); + try + { + var decompressed = GZipHelper.Decompress(e.Data); + OnDataAvailable(decompressed); + } + catch (Exception ex) + { + if (ex.Message.Contains("GZip")) + { + //Temporarily ignore, probably switching protocol definitions... + } + else + { + //Do nothing... ? + } + } } else { @@ -208,26 +222,33 @@ namespace Tango.WebRTC { if (Mode == WebRtcTransportAdapterMode.Passive) { - var answer = await _client.CreateAnswer(request.Offer); - await SignalingTransporter.SendGenericResponse(new OfferResponse() { Answer = answer }, token); - _answerReceived = true; - - foreach (var ice in _queuedIceCandidates.ToList()) + try { - LogManager.Log($"Sending existing ice candidate '{ice.Sdp}'..."); + var answer = await _client.CreateAnswer(request.Offer); + await SignalingTransporter.SendGenericResponse(new OfferResponse() { Answer = answer }, token); + _answerReceived = true; - try + foreach (var ice in _queuedIceCandidates.ToList()) { - await SignalingTransporter.SendGenericRequest<IceCandidateRequest, IceCandidateResponse>(new IceCandidateRequest() { IceCandidate = ice }, new TransportRequestConfig() + LogManager.Log($"{ComponentName}: Sending existing ice candidate '{ice.Sdp}'..."); + + try { - Timeout = TimeSpan.FromSeconds(30), - }); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error sending ice candidate to remote peer."); + await SignalingTransporter.SendGenericRequest<IceCandidateRequest, IceCandidateResponse>(new IceCandidateRequest() { IceCandidate = ice }, new TransportRequestConfig() + { + Timeout = TimeSpan.FromSeconds(30), + }); + } + catch (Exception ex) + { + LogManager.Log(ex, $"{ComponentName}: Error sending ice candidate to remote peer."); + } } } + catch (Exception ex) + { + LogManager.Log(ex, $"{ComponentName}: Error occurred while trying to return WebRTC answer."); + } } } @@ -237,7 +258,7 @@ namespace Tango.WebRTC { if (_answerReceived) { - LogManager.Log("New WebRTC candidate available. Sending ice to remote peer..."); + LogManager.Log($"{ComponentName}: New WebRTC candidate available. Sending ice to remote peer..."); await SignalingTransporter.SendGenericRequest<IceCandidateRequest, IceCandidateResponse>(new IceCandidateRequest() { IceCandidate = e.IceCandidate }, new TransportRequestConfig() { @@ -248,11 +269,11 @@ namespace Tango.WebRTC { if (Mode == WebRtcTransportAdapterMode.Active) { - LogManager.Log("New WebRTC candidate available. Will be sent after an answer is received..."); + LogManager.Log($"{ComponentName}: New WebRTC candidate available. Will be sent after an answer is received..."); } else { - LogManager.Log("New WebRTC candidate available. Will be sent after an offer is received..."); + LogManager.Log($"{ComponentName}: New WebRTC candidate available. Will be sent after an offer is received..."); } _queuedIceCandidates.Add(e.IceCandidate); @@ -260,7 +281,7 @@ namespace Tango.WebRTC } catch (Exception ex) { - LogManager.Log(ex, "Error sending ice candidate to remote peer."); + LogManager.Log(ex, $"{ComponentName}: Error sending ice candidate to remote peer."); } } @@ -271,7 +292,7 @@ namespace Tango.WebRTC LogManager.Log($"{ComponentName}: Ice candidate request received from the remote peer."); await SignalingTransporter.SendGenericResponse(new IceCandidateResponse() { }, token); - LogManager.Log($"Adding ice candidate '{request.IceCandidate.Sdp}'..."); + LogManager.Log($"{ComponentName}: Adding ice candidate '{request.IceCandidate.Sdp}'..."); _client.AddIceCandidate(request.IceCandidate); LogManager.Log($"{ComponentName}: Ice candidate added."); } @@ -296,7 +317,7 @@ namespace Tango.WebRTC { if (_client != null) { - LogManager.Log("Disposing WebRTC client..."); + LogManager.Log($"{ComponentName}: Disposing WebRTC client..."); _client.NewIceCandidate -= WebRtc_NewIceCandidate; _client.Disconnected -= WebRtc_Disconnected; @@ -308,11 +329,11 @@ namespace Tango.WebRTC _client = null; SignalingTransporter.UnregisterRequestHandler<IceCandidateRequest>(OnIceCandidateRequestReceived); SignalingTransporter.UnregisterRequestHandler<OfferRequest>(OnOfferRequestReceived); - LogManager.Log("WebRTC client disposed."); + LogManager.Log($"{ComponentName}: WebRTC client disposed."); } catch (Exception ex) { - LogManager.Log(ex, "Error disposing WebRTC client."); + LogManager.Log(ex, $"{ComponentName}: Error disposing WebRTC client."); } } |
