/* * Copyright 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #import "RTCPeerConnectionFactoryOptions+Private.h" #include "rtc_base/network_constants.h" namespace { void setNetworkBit(webrtc::PeerConnectionFactoryInterface::Options* options, rtc::AdapterType type, bool ignore) { if (ignore) { options->network_ignore_mask |= type; } else { options->network_ignore_mask &= ~type; } } } // namespace @implementation RTC_OBJC_TYPE (RTCPeerConnectionFactoryOptions) @synthesize disableEncryption = _disableEncryption; @synthesize disableNetworkMonitor = _disableNetworkMonitor; @synthesize ignoreLoopbackNetworkAdapter = _ignoreLoopbackNetworkAdapter; @synthesize ignoreVPNNetworkAdapter = _ignoreVPNNetworkAdapter; @synthesize ignoreCellularNetworkAdapter = _ignoreCellularNetworkAdapter; @synthesize ignoreWiFiNetworkAdapter = _ignoreWiFiNetworkAdapter; @synthesize ignoreEthernetNetworkAdapter = _ignoreEthernetNetworkAdapter; - (instancetype)init { return [super init]; } - (webrtc::PeerConnectionFactoryInterface::Options)nativeOptions { webrtc::PeerConnectionFactoryInterface::Options options; options.disable_encryption = self.disableEncryption; options.disable_network_monitor = self.disableNetworkMonitor; setNetworkBit(&options, rtc::ADAPTER_TYPE_LOOPBACK, self.ignoreLoopbackNetworkAdapter); setNetworkBit(&options, rtc::ADAPTER_TYPE_VPN, self.ignoreVPNNetworkAdapter); setNetworkBit(&options, rtc::ADAPTER_TYPE_CELLULAR, self.ignoreCellularNetworkAdapter); setNetworkBit(&options, rtc::ADAPTER_TYPE_WIFI, self.ignoreWiFiNetworkAdapter); setNetworkBit(&options, rtc::ADAPTER_TYPE_ETHERNET, self.ignoreEthernetNetworkAdapter); return options; } @end