Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license | |
| 5 * that can be found in the LICENSE file in the root of the source | |
| 6 * tree. An additional intellectual property rights grant can be found | |
| 7 * in the file PATENTS. All contributing project authors may | |
| 8 * be found in the AUTHORS file in the root of the source tree. | |
| 9 */ | |
| 10 | |
| 11 #import "RTCConfiguration.h" | |
| 12 | |
| 13 #import "webrtc/api/objc/RTCConfiguration+Private.h" | |
| 14 #import "webrtc/api/objc/RTCIceServer+Private.h" | |
| 15 | |
| 16 @implementation RTCConfiguration | |
| 17 | |
| 18 @synthesize iceServers = _iceServers; | |
| 19 @synthesize iceTransportPolicy = _iceTransportPolicy; | |
| 20 @synthesize bundlePolicy = _bundlePolicy; | |
| 21 @synthesize rtcpMuxPolicy = _rtcpMuxPolicy; | |
| 22 @synthesize tcpCandidatePolicy = _tcpCandidatePolicy; | |
| 23 @synthesize audioJitterBufferMaxPackets = _audioJitterBufferMaxPackets; | |
| 24 @synthesize iceConnectionReceivingTimeout = _iceConnectionReceivingTimeout; | |
| 25 @synthesize iceBackupCandidatePairPingInterval = | |
| 26 _iceBackupCandidatePairPingInterval; | |
| 27 | |
| 28 - (instancetype)init { | |
| 29 if (self = [super init]) { | |
| 30 // Copy defaults. | |
| 31 webrtc::PeerConnectionInterface::RTCConfiguration config; | |
| 32 _iceTransportPolicy = | |
| 33 [[self class] transportPolicyForTransportsType:config.type]; | |
| 34 _bundlePolicy = | |
| 35 [[self class] bundlePolicyForNativePolicy:config.bundle_policy]; | |
| 36 _rtcpMuxPolicy = | |
| 37 [[self class] rtcpMuxPolicyForNativePolicy:config.rtcp_mux_policy]; | |
| 38 _tcpCandidatePolicy = [[self class] tcpCandidatePolicyForNativePolicy: | |
| 39 config.tcp_candidate_policy]; | |
| 40 _audioJitterBufferMaxPackets = config.audio_jitter_buffer_max_packets; | |
| 41 _iceConnectionReceivingTimeout = config.ice_connection_receiving_timeout; | |
| 42 _iceBackupCandidatePairPingInterval = | |
| 43 config.ice_backup_candidate_pair_ping_interval; | |
| 44 } | |
| 45 return self; | |
| 46 } | |
| 47 | |
| 48 - (instancetype)initWithIceServers:(NSArray<RTCIceServer *> *)iceServers | |
| 49 iceTransportPolicy:(RTCIceTransportPolicy)iceTransportPolicy | |
| 50 bundlePolicy:(RTCBundlePolicy)bundlePolicy | |
| 51 rtcpMuxPolicy:(RTCRtcpMuxPolicy)rtcpMuxPolicy | |
| 52 tcpCandidatePolicy:(RTCTcpCandidatePolicy)tcpCandidatePolicy | |
| 53 audioJitterBufferMaxPackets:(int)audioJitterBufferMaxPackets | |
| 54 iceConnectionReceivingTimeout:(int)iceConnectionReceivingTimeout | |
| 55 iceBackupCandidatePairPingInterval:(int)iceBackupCandidatePairPingInterval { | |
| 56 if (self = [self init]) { | |
| 57 if (iceServers) { | |
| 58 _iceServers = [iceServers copy]; | |
| 59 } | |
| 60 _iceTransportPolicy = iceTransportPolicy; | |
| 61 _bundlePolicy = bundlePolicy; | |
| 62 _rtcpMuxPolicy = rtcpMuxPolicy; | |
| 63 _tcpCandidatePolicy = tcpCandidatePolicy; | |
| 64 _audioJitterBufferMaxPackets = audioJitterBufferMaxPackets; | |
| 65 _iceConnectionReceivingTimeout = iceConnectionReceivingTimeout; | |
| 66 _iceBackupCandidatePairPingInterval = iceBackupCandidatePairPingInterval; | |
| 67 } | |
| 68 return self; | |
| 69 } | |
| 70 | |
| 71 - (NSString *)description { | |
| 72 return [NSString stringWithFormat:@"RTCConfiguration:\n%@\n%@\n%@\n%@\n%@\n" | |
| 73 "%d\n%d\n%d\n", | |
| 74 _iceServers, | |
| 75 [[self class] stringForTransportPolicy: | |
| 76 _iceTransportPolicy], | |
| 77 [[self class] stringForBundlePolicy: | |
| 78 _bundlePolicy], | |
| 79 [[self class] stringForRtcpMuxPolicy: | |
| 80 _rtcpMuxPolicy], | |
| 81 [[self class] stringForTcpCandidatePolicy: | |
| 82 _tcpCandidatePolicy], | |
| 83 _audioJitterBufferMaxPackets, | |
| 84 _iceConnectionReceivingTimeout, | |
| 85 _iceBackupCandidatePairPingInterval]; | |
| 86 } | |
| 87 | |
| 88 #pragma mark - Private | |
| 89 | |
| 90 - (webrtc::PeerConnectionInterface::RTCConfiguration)nativeConfiguration { | |
| 91 webrtc::PeerConnectionInterface::RTCConfiguration nativeConfig; | |
| 92 | |
| 93 for (RTCIceServer *iceServer in _iceServers) { | |
| 94 nativeConfig.servers.push_back(iceServer.iceServer); | |
| 95 } | |
| 96 nativeConfig.type = | |
| 97 [[self class] nativeTransportsTypeForTransportPolicy:_iceTransportPolicy]; | |
| 98 nativeConfig.bundle_policy = | |
| 99 [[self class] nativeBundlePolicyForPolicy:_bundlePolicy]; | |
| 100 nativeConfig.rtcp_mux_policy = | |
| 101 [[self class] nativeRtcpMuxPolicyForPolicy:_rtcpMuxPolicy]; | |
| 102 nativeConfig.tcp_candidate_policy = | |
| 103 [[self class] nativeTcpCandidatePolicyForPolicy:_tcpCandidatePolicy]; | |
| 104 nativeConfig.audio_jitter_buffer_max_packets = _audioJitterBufferMaxPackets; | |
| 105 nativeConfig.ice_connection_receiving_timeout = | |
| 106 _iceConnectionReceivingTimeout; | |
| 107 nativeConfig.ice_backup_candidate_pair_ping_interval = | |
| 108 _iceBackupCandidatePairPingInterval; | |
| 109 | |
| 110 return nativeConfig; | |
| 111 } | |
| 112 | |
| 113 - (instancetype)initWithNativeConfiguration: | |
| 114 (webrtc::PeerConnectionInterface::RTCConfiguration)nativeConfig { | |
| 115 NSMutableArray *iceServers = | |
| 116 [NSMutableArray arrayWithCapacity:nativeConfig.servers.size()]; | |
| 117 for (auto const &server : nativeConfig.servers) { | |
| 118 RTCIceServer *iceServer = | |
| 119 [[RTCIceServer alloc] initWithNativeServer:server]; | |
| 120 [iceServers addObject:iceServer]; | |
| 121 } | |
| 122 | |
| 123 if (self = [self init]) { | |
| 124 if (iceServers) { | |
| 125 _iceServers = [iceServers copy]; | |
| 126 } | |
| 127 _iceTransportPolicy = | |
| 128 [[self class] transportPolicyForTransportsType:nativeConfig.type]; | |
| 129 _bundlePolicy = | |
| 130 [[self class] bundlePolicyForNativePolicy:nativeConfig.bundle_policy]; | |
| 131 _rtcpMuxPolicy = [[self class] rtcpMuxPolicyForNativePolicy: | |
| 132 nativeConfig.rtcp_mux_policy]; | |
| 133 _tcpCandidatePolicy = [[self class] tcpCandidatePolicyForNativePolicy: | |
| 134 nativeConfig.tcp_candidate_policy]; | |
| 135 _audioJitterBufferMaxPackets = nativeConfig.audio_jitter_buffer_max_packets; | |
| 136 _iceConnectionReceivingTimeout = | |
| 137 nativeConfig.ice_connection_receiving_timeout; | |
| 138 _iceBackupCandidatePairPingInterval = | |
| 139 nativeConfig.ice_backup_candidate_pair_ping_interval; | |
| 140 } | |
| 141 | |
| 142 return self; | |
| 143 } | |
| 144 | |
| 145 + (webrtc::PeerConnectionInterface::IceTransportsType) | |
| 146 nativeTransportsTypeForTransportPolicy:(RTCIceTransportPolicy)policy { | |
|
tkchin_webrtc
2016/01/22 21:17:04
is this because it's called policy in the spec?
hjon_webrtc
2016/01/22 21:35:22
Correct. Added note in the header file calling thi
| |
| 147 switch (policy) { | |
| 148 case RTCIceTransportPolicyNone: | |
| 149 return webrtc::PeerConnectionInterface::kNone; | |
| 150 case RTCIceTransportPolicyRelay: | |
| 151 return webrtc::PeerConnectionInterface::kRelay; | |
| 152 case RTCIceTransportPolicyNoHost: | |
| 153 return webrtc::PeerConnectionInterface::kNoHost; | |
| 154 case RTCIceTransportPolicyAll: | |
| 155 return webrtc::PeerConnectionInterface::kAll; | |
| 156 } | |
| 157 } | |
| 158 | |
| 159 + (RTCIceTransportPolicy)transportPolicyForTransportsType: | |
| 160 (webrtc::PeerConnectionInterface::IceTransportsType)nativeType { | |
| 161 switch (nativeType) { | |
| 162 case webrtc::PeerConnectionInterface::kNone: | |
| 163 return RTCIceTransportPolicyNone; | |
| 164 case webrtc::PeerConnectionInterface::kRelay: | |
| 165 return RTCIceTransportPolicyRelay; | |
| 166 case webrtc::PeerConnectionInterface::kNoHost: | |
| 167 return RTCIceTransportPolicyNoHost; | |
| 168 case webrtc::PeerConnectionInterface::kAll: | |
| 169 return RTCIceTransportPolicyAll; | |
| 170 } | |
| 171 } | |
| 172 | |
| 173 + (NSString *)stringForTransportPolicy:(RTCIceTransportPolicy)policy { | |
| 174 switch (policy) { | |
| 175 case RTCIceTransportPolicyNone: | |
| 176 return @"None"; | |
|
tkchin_webrtc
2016/01/22 21:17:04
personally I think all these are best all caps
e.g
hjon_webrtc
2016/01/22 21:35:22
Done.
| |
| 177 case RTCIceTransportPolicyRelay: | |
| 178 return @"Relay"; | |
| 179 case RTCIceTransportPolicyNoHost: | |
| 180 return @"No host"; | |
| 181 case RTCIceTransportPolicyAll: | |
| 182 return @"All"; | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 + (webrtc::PeerConnectionInterface::BundlePolicy)nativeBundlePolicyForPolicy: | |
| 187 (RTCBundlePolicy)policy { | |
| 188 switch (policy) { | |
| 189 case RTCBundlePolicyBalanced: | |
| 190 return webrtc::PeerConnectionInterface::kBundlePolicyBalanced; | |
| 191 case RTCBundlePolicyMaxCompat: | |
| 192 return webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat; | |
| 193 case RTCBundlePolicyMaxBundle: | |
| 194 return webrtc::PeerConnectionInterface::kBundlePolicyMaxBundle; | |
| 195 } | |
| 196 } | |
| 197 | |
| 198 + (RTCBundlePolicy)bundlePolicyForNativePolicy: | |
| 199 (webrtc::PeerConnectionInterface::BundlePolicy)nativePolicy { | |
| 200 switch (nativePolicy) { | |
| 201 case webrtc::PeerConnectionInterface::kBundlePolicyBalanced: | |
| 202 return RTCBundlePolicyBalanced; | |
| 203 case webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat: | |
| 204 return RTCBundlePolicyMaxCompat; | |
| 205 case webrtc::PeerConnectionInterface::kBundlePolicyMaxBundle: | |
| 206 return RTCBundlePolicyMaxBundle; | |
| 207 } | |
| 208 } | |
| 209 | |
| 210 + (NSString *)stringForBundlePolicy:(RTCBundlePolicy)policy { | |
| 211 switch (policy) { | |
| 212 case RTCBundlePolicyBalanced: | |
| 213 return @"Balanced"; | |
| 214 case RTCBundlePolicyMaxCompat: | |
| 215 return @"Max compat"; | |
| 216 case RTCBundlePolicyMaxBundle: | |
| 217 return @"Max bundle"; | |
| 218 } | |
| 219 } | |
| 220 | |
| 221 + (webrtc::PeerConnectionInterface::RtcpMuxPolicy)nativeRtcpMuxPolicyForPolicy: | |
| 222 (RTCRtcpMuxPolicy)policy { | |
| 223 switch (policy) { | |
| 224 case RTCRtcpMuxPolicyNegotiate: | |
| 225 return webrtc::PeerConnectionInterface::kRtcpMuxPolicyNegotiate; | |
| 226 case RTCRtcpMuxPolicyRequire: | |
| 227 return webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire; | |
| 228 } | |
| 229 } | |
| 230 | |
| 231 + (RTCRtcpMuxPolicy)rtcpMuxPolicyForNativePolicy: | |
| 232 (webrtc::PeerConnectionInterface::RtcpMuxPolicy)nativePolicy { | |
| 233 switch (nativePolicy) { | |
| 234 case webrtc::PeerConnectionInterface::kRtcpMuxPolicyNegotiate: | |
| 235 return RTCRtcpMuxPolicyNegotiate; | |
| 236 case webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire: | |
| 237 return RTCRtcpMuxPolicyRequire; | |
| 238 } | |
| 239 } | |
| 240 | |
| 241 + (NSString *)stringForRtcpMuxPolicy:(RTCRtcpMuxPolicy)policy { | |
| 242 switch (policy) { | |
| 243 case RTCRtcpMuxPolicyNegotiate: | |
| 244 return @"Negotiate"; | |
| 245 case RTCRtcpMuxPolicyRequire: | |
| 246 return @"Require"; | |
| 247 } | |
| 248 } | |
| 249 | |
| 250 + (webrtc::PeerConnectionInterface::TcpCandidatePolicy) | |
| 251 nativeTcpCandidatePolicyForPolicy:(RTCTcpCandidatePolicy)policy { | |
| 252 switch (policy) { | |
| 253 case RTCTcpCandidatePolicyEnabled: | |
| 254 return webrtc::PeerConnectionInterface::kTcpCandidatePolicyEnabled; | |
| 255 case RTCTcpCandidatePolicyDisabled: | |
| 256 return webrtc::PeerConnectionInterface::kTcpCandidatePolicyDisabled; | |
| 257 } | |
| 258 } | |
| 259 | |
| 260 + (RTCTcpCandidatePolicy)tcpCandidatePolicyForNativePolicy: | |
| 261 (webrtc::PeerConnectionInterface::TcpCandidatePolicy)nativePolicy { | |
| 262 switch (nativePolicy) { | |
| 263 case webrtc::PeerConnectionInterface::kTcpCandidatePolicyEnabled: | |
| 264 return RTCTcpCandidatePolicyEnabled; | |
| 265 case webrtc::PeerConnectionInterface::kTcpCandidatePolicyDisabled: | |
| 266 return RTCTcpCandidatePolicyDisabled; | |
| 267 } | |
| 268 } | |
| 269 | |
| 270 + (NSString *)stringForTcpCandidatePolicy:(RTCTcpCandidatePolicy)policy { | |
| 271 switch (policy) { | |
| 272 case RTCTcpCandidatePolicyEnabled: | |
| 273 return @"Enabled"; | |
| 274 case RTCTcpCandidatePolicyDisabled: | |
| 275 return @"Disabled"; | |
| 276 } | |
| 277 } | |
| 278 | |
| 279 @end | |
| OLD | NEW |