Index: webrtc/base/network.h |
diff --git a/webrtc/base/network.h b/webrtc/base/network.h |
index a41da4a69a0f01f41fd7344ce89d99b6f0e593d2..05943fb9125ea23f9cc24cf7f30f45a7841175ee 100644 |
--- a/webrtc/base/network.h |
+++ b/webrtc/base/network.h |
@@ -37,6 +37,11 @@ class Network; |
class NetworkMonitorInterface; |
class Thread; |
+static const uint16_t kNetworkCostMax = 999; |
+static const uint16_t kNetworkCostHigh = 900; |
+static const uint16_t kNetworkCostUnknown = 50; |
+static const uint16_t kNetworkCostLow = 10; |
+static const uint16_t kNetworkCostMin = 0; |
// By default, ignore loopback interfaces on the host. |
const int kDefaultNetworkIgnoreMask = ADAPTER_TYPE_LOOPBACK; |
@@ -249,6 +254,8 @@ class BasicNetworkManager : public NetworkManagerBase, |
// Only updates the networks; does not reschedule the next update. |
void UpdateNetworksOnce(); |
+ AdapterType GetAdapterTypeFromName(const char* network_name) const; |
+ |
Thread* thread_; |
bool sent_first_update_; |
int start_count_; |
@@ -273,6 +280,7 @@ class Network { |
~Network(); |
sigslot::signal1<const Network*> SignalInactive; |
+ sigslot::signal1<const Network*> SignalTypeChanged; |
const DefaultLocalAddressProvider* default_local_address_provider() { |
return default_local_address_provider_; |
@@ -344,8 +352,28 @@ class Network { |
void set_ignored(bool ignored) { ignored_ = ignored; } |
AdapterType type() const { return type_; } |
- void set_type(AdapterType type) { type_ = type; } |
+ void set_type(AdapterType type) { |
+ if (type_ == type) { |
+ return; |
+ } |
+ type_ = type; |
+ SignalTypeChanged(this); |
+ } |
+ uint16_t GetCost() const { |
+ switch (type_) { |
+ case rtc::ADAPTER_TYPE_ETHERNET: |
+ case rtc::ADAPTER_TYPE_LOOPBACK: |
+ return kNetworkCostMin; |
+ case rtc::ADAPTER_TYPE_WIFI: |
+ case rtc::ADAPTER_TYPE_VPN: |
+ return kNetworkCostLow; |
+ case rtc::ADAPTER_TYPE_CELLULAR: |
+ return kNetworkCostHigh; |
+ default: |
+ return kNetworkCostUnknown; |
+ } |
+ } |
// A unique id assigned by the network manager, which may be signaled |
// to the remote side in the candidate. |
uint16_t id() const { return id_; } |