From d7e771da7bdde0ac41514a1c695149094abacf5e Mon Sep 17 00:00:00 2001 From: zhihuang Date: Thu, 16 Feb 2017 11:29:39 -0800 Subject: [PATCH] Add the URL attribute to cricket::Candiate. (Objc wrapper) The url of the ICE server is added to the IceCandiate class. This can be used to tell which server this candidate was gathered from. BUG=webrtc:7128 Review-Url: https://codereview.webrtc.org/2688943003 Cr-Commit-Position: refs/heads/master@{#16652} --- webrtc/api/jsep.h | 4 ++++ webrtc/api/jsepicecandidate.h | 2 ++ .../sdk/objc/Framework/Classes/RTCIceCandidate.mm | 15 ++++++++++----- .../Framework/Headers/WebRTC/RTCIceCandidate.h | 3 +++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/webrtc/api/jsep.h b/webrtc/api/jsep.h index d19ae3c7d0..5ebf7c19d0 100644 --- a/webrtc/api/jsep.h +++ b/webrtc/api/jsep.h @@ -59,6 +59,10 @@ class IceCandidateInterface { virtual int sdp_mline_index() const = 0; // Only for use internally. virtual const cricket::Candidate& candidate() const = 0; + // The URL of the ICE server which this candidate was gathered from. + // TODO(zhihuang): Remove the default implementation once the subclasses + // implement this method. + virtual std::string server_url() const { return ""; } // Creates a SDP-ized form of this candidate. virtual bool ToString(std::string* out) const = 0; }; diff --git a/webrtc/api/jsepicecandidate.h b/webrtc/api/jsepicecandidate.h index f06863765c..a8919e0a00 100644 --- a/webrtc/api/jsepicecandidate.h +++ b/webrtc/api/jsepicecandidate.h @@ -43,6 +43,8 @@ class JsepIceCandidate : public IceCandidateInterface { return candidate_; } + virtual std::string server_url() const { return candidate_.url(); } + virtual bool ToString(std::string* out) const; private: diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm b/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm index 193403d11d..0e2cc8abc8 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm +++ b/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm @@ -20,6 +20,7 @@ @synthesize sdpMid = _sdpMid; @synthesize sdpMLineIndex = _sdpMLineIndex; @synthesize sdp = _sdp; +@synthesize serverUrl = _serverUrl; - (instancetype)initWithSdp:(NSString *)sdp sdpMLineIndex:(int)sdpMLineIndex @@ -34,10 +35,11 @@ } - (NSString *)description { - return [NSString stringWithFormat:@"RTCIceCandidate:\n%@\n%d\n%@", + return [NSString stringWithFormat:@"RTCIceCandidate:\n%@\n%d\n%@\n%@", _sdpMid, _sdpMLineIndex, - _sdp]; + _sdp, + _serverUrl]; } #pragma mark - Private @@ -48,9 +50,12 @@ std::string sdp; candidate->ToString(&sdp); - return [self initWithSdp:[NSString stringForStdString:sdp] - sdpMLineIndex:candidate->sdp_mline_index() - sdpMid:[NSString stringForStdString:candidate->sdp_mid()]]; + RTCIceCandidate *rtcCandidate = + [self initWithSdp:[NSString stringForStdString:sdp] + sdpMLineIndex:candidate->sdp_mline_index() + sdpMid:[NSString stringForStdString:candidate->sdp_mid()]]; + rtcCandidate->_serverUrl = [NSString stringForStdString:candidate->server_url()]; + return rtcCandidate; } - (std::unique_ptr)nativeCandidate { diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIceCandidate.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIceCandidate.h index 9f472b8df0..3b7f3e26e5 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIceCandidate.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIceCandidate.h @@ -32,6 +32,9 @@ RTC_EXPORT /** The SDP string for this candidate. */ @property(nonatomic, readonly) NSString *sdp; +/** The URL of the ICE server which this candidate is gathered from. */ +@property(nonatomic, readonly, nullable) NSString *serverUrl; + - (instancetype)init NS_UNAVAILABLE; /**