Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: webrtc/base/fakenetwork.h

Issue 1246913005: TransportController refactoring (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: minor cleanup Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 14 matching lines...) Expand all
25 const int kFakeIPv4NetworkPrefixLength = 24; 25 const int kFakeIPv4NetworkPrefixLength = 24;
26 const int kFakeIPv6NetworkPrefixLength = 64; 26 const int kFakeIPv6NetworkPrefixLength = 64;
27 27
28 // Fake network manager that allows us to manually specify the IPs to use. 28 // Fake network manager that allows us to manually specify the IPs to use.
29 class FakeNetworkManager : public NetworkManagerBase, 29 class FakeNetworkManager : public NetworkManagerBase,
30 public MessageHandler { 30 public MessageHandler {
31 public: 31 public:
32 FakeNetworkManager() 32 FakeNetworkManager()
33 : thread_(Thread::Current()), 33 : thread_(Thread::Current()),
34 next_index_(0), 34 next_index_(0),
35 started_(false), 35 start_count_(0),
36 sent_first_update_(false) { 36 sent_first_update_(false) {
37 } 37 }
38 38
39 typedef std::vector<SocketAddress> IfaceList; 39 typedef std::vector<SocketAddress> IfaceList;
40 40
41 void AddInterface(const SocketAddress& iface) { 41 void AddInterface(const SocketAddress& iface) {
42 // ensure a unique name for the interface 42 // ensure a unique name for the interface
43 SocketAddress address("test" + rtc::ToString(next_index_++), 0); 43 SocketAddress address("test" + rtc::ToString(next_index_++), 0);
44 address.SetResolvedIP(iface.ipaddr()); 44 address.SetResolvedIP(iface.ipaddr());
45 ifaces_.push_back(address); 45 ifaces_.push_back(address);
46 DoUpdateNetworks(); 46 DoUpdateNetworks();
47 } 47 }
48 48
49 void RemoveInterface(const SocketAddress& iface) { 49 void RemoveInterface(const SocketAddress& iface) {
50 for (IfaceList::iterator it = ifaces_.begin(); 50 for (IfaceList::iterator it = ifaces_.begin();
51 it != ifaces_.end(); ++it) { 51 it != ifaces_.end(); ++it) {
52 if (it->EqualIPs(iface)) { 52 if (it->EqualIPs(iface)) {
53 ifaces_.erase(it); 53 ifaces_.erase(it);
54 break; 54 break;
55 } 55 }
56 } 56 }
57 DoUpdateNetworks(); 57 DoUpdateNetworks();
58 } 58 }
59 59
60 virtual void StartUpdating() { 60 virtual void StartUpdating() {
61 if (started_) { 61 if (start_count_ == 0) {
62 ++start_count_;
63 sent_first_update_ = false;
64 thread_->Post(this);
65 } else {
66 ++start_count_;
62 if (sent_first_update_) 67 if (sent_first_update_)
63 SignalNetworksChanged(); 68 SignalNetworksChanged();
64 return;
65 } 69 }
66
67 started_ = true;
68 sent_first_update_ = false;
69 thread_->Post(this);
70 } 70 }
71 71
72 virtual void StopUpdating() { 72 virtual void StopUpdating() {
73 started_ = false; 73 --start_count_;
74 } 74 }
75 75
76 // MessageHandler interface. 76 // MessageHandler interface.
77 virtual void OnMessage(Message* msg) { 77 virtual void OnMessage(Message* msg) {
78 DoUpdateNetworks(); 78 DoUpdateNetworks();
79 } 79 }
80 80
81 private: 81 private:
82 void DoUpdateNetworks() { 82 void DoUpdateNetworks() {
83 if (!started_) 83 if (start_count_ == 0)
84 return; 84 return;
85 std::vector<Network*> networks; 85 std::vector<Network*> networks;
86 for (IfaceList::iterator it = ifaces_.begin(); 86 for (IfaceList::iterator it = ifaces_.begin();
87 it != ifaces_.end(); ++it) { 87 it != ifaces_.end(); ++it) {
88 int prefix_length = 0; 88 int prefix_length = 0;
89 if (it->ipaddr().family() == AF_INET) { 89 if (it->ipaddr().family() == AF_INET) {
90 prefix_length = kFakeIPv4NetworkPrefixLength; 90 prefix_length = kFakeIPv4NetworkPrefixLength;
91 } else if (it->ipaddr().family() == AF_INET6) { 91 } else if (it->ipaddr().family() == AF_INET6) {
92 prefix_length = kFakeIPv6NetworkPrefixLength; 92 prefix_length = kFakeIPv6NetworkPrefixLength;
93 } 93 }
94 IPAddress prefix = TruncateIP(it->ipaddr(), prefix_length); 94 IPAddress prefix = TruncateIP(it->ipaddr(), prefix_length);
95 scoped_ptr<Network> net(new Network(it->hostname(), 95 scoped_ptr<Network> net(new Network(it->hostname(),
96 it->hostname(), 96 it->hostname(),
97 prefix, 97 prefix,
98 prefix_length)); 98 prefix_length));
99 net->AddIP(it->ipaddr()); 99 net->AddIP(it->ipaddr());
100 networks.push_back(net.release()); 100 networks.push_back(net.release());
101 } 101 }
102 bool changed; 102 bool changed;
103 MergeNetworkList(networks, &changed); 103 MergeNetworkList(networks, &changed);
104 if (changed || !sent_first_update_) { 104 if (changed || !sent_first_update_) {
105 SignalNetworksChanged(); 105 SignalNetworksChanged();
106 sent_first_update_ = true; 106 sent_first_update_ = true;
107 } 107 }
108 } 108 }
109 109
110 Thread* thread_; 110 Thread* thread_;
111 IfaceList ifaces_; 111 IfaceList ifaces_;
112 int next_index_; 112 int next_index_;
113 bool started_; 113 int start_count_;
114 bool sent_first_update_; 114 bool sent_first_update_;
115 }; 115 };
116 116
117 } // namespace rtc 117 } // namespace rtc
118 118
119 #endif // WEBRTC_BASE_FAKENETWORK_H_ 119 #endif // WEBRTC_BASE_FAKENETWORK_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698