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

Side by Side Diff: net/dns/address_sorter_posix.cc

Issue 11620007: Switch from OnIPAddressChanged and OnConnectionTypeChange to OnNetworkChanged Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/dns/address_sorter_posix.h" 5 #include "net/dns/address_sorter_posix.h"
6 6
7 #include <netinet/in.h> 7 #include <netinet/in.h>
8 8
9 #if defined(OS_MACOSX) || defined(OS_BSD) 9 #if defined(OS_MACOSX) || defined(OS_BSD)
10 #include <sys/socket.h> // Must be included before ifaddrs.h. 10 #include <sys/socket.h> // Must be included before ifaddrs.h.
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 } // namespace 263 } // namespace
264 264
265 AddressSorterPosix::AddressSorterPosix(ClientSocketFactory* socket_factory) 265 AddressSorterPosix::AddressSorterPosix(ClientSocketFactory* socket_factory)
266 : socket_factory_(socket_factory), 266 : socket_factory_(socket_factory),
267 precedence_table_(LoadPolicy(kDefaultPrecedenceTable, 267 precedence_table_(LoadPolicy(kDefaultPrecedenceTable,
268 arraysize(kDefaultPrecedenceTable))), 268 arraysize(kDefaultPrecedenceTable))),
269 label_table_(LoadPolicy(kDefaultLabelTable, 269 label_table_(LoadPolicy(kDefaultLabelTable,
270 arraysize(kDefaultLabelTable))), 270 arraysize(kDefaultLabelTable))),
271 ipv4_scope_table_(LoadPolicy(kDefaultIPv4ScopeTable, 271 ipv4_scope_table_(LoadPolicy(kDefaultIPv4ScopeTable,
272 arraysize(kDefaultIPv4ScopeTable))) { 272 arraysize(kDefaultIPv4ScopeTable))) {
273 NetworkChangeNotifier::AddIPAddressObserver(this); 273 NetworkChangeNotifier::AddNetworkChangeObserver(this);
274 OnIPAddressChanged(); 274 OnNetworkChanged(NetworkChangeNotifier::CONNECTION_NONE);
275 } 275 }
276 276
277 AddressSorterPosix::~AddressSorterPosix() { 277 AddressSorterPosix::~AddressSorterPosix() {
278 NetworkChangeNotifier::RemoveIPAddressObserver(this); 278 NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
279 } 279 }
280 280
281 void AddressSorterPosix::Sort(const AddressList& list, 281 void AddressSorterPosix::Sort(const AddressList& list,
282 const CallbackType& callback) const { 282 const CallbackType& callback) const {
283 DCHECK(CalledOnValidThread()); 283 DCHECK(CalledOnValidThread());
284 ScopedVector<DestinationInfo> sort_list; 284 ScopedVector<DestinationInfo> sort_list;
285 285
286 for (size_t i = 0; i < list.size(); ++i) { 286 for (size_t i = 0; i < list.size(); ++i) {
287 scoped_ptr<DestinationInfo> info(new DestinationInfo()); 287 scoped_ptr<DestinationInfo> info(new DestinationInfo());
288 info->address = list[i].address(); 288 info->address = list[i].address();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 333
334 std::stable_sort(sort_list.begin(), sort_list.end(), CompareDestinations); 334 std::stable_sort(sort_list.begin(), sort_list.end(), CompareDestinations);
335 335
336 AddressList result; 336 AddressList result;
337 for (size_t i = 0; i < sort_list.size(); ++i) 337 for (size_t i = 0; i < sort_list.size(); ++i)
338 result.push_back(IPEndPoint(sort_list[i]->address, 0 /* port */)); 338 result.push_back(IPEndPoint(sort_list[i]->address, 0 /* port */));
339 339
340 callback.Run(true, result); 340 callback.Run(true, result);
341 } 341 }
342 342
343 void AddressSorterPosix::OnIPAddressChanged() { 343 void AddressSorterPosix::OnNetworkChanged(
344 NetworkChangeNotifier::ConnectionType type) {
344 DCHECK(CalledOnValidThread()); 345 DCHECK(CalledOnValidThread());
346 if (type != NetworkChangeNotifier::CONNECTION_NONE)
szym 2013/01/20 06:52:08 I suggest a comment: // Update the map on the "des
347 return;
345 source_map_.clear(); 348 source_map_.clear();
346 #if defined(OS_LINUX) 349 #if defined(OS_LINUX)
347 const internal::AddressTrackerLinux* tracker = 350 const internal::AddressTrackerLinux* tracker =
348 NetworkChangeNotifier::GetAddressTracker(); 351 NetworkChangeNotifier::GetAddressTracker();
349 if (!tracker) 352 if (!tracker)
350 return; 353 return;
351 typedef internal::AddressTrackerLinux::AddressMap AddressMap; 354 typedef internal::AddressTrackerLinux::AddressMap AddressMap;
352 AddressMap map = tracker->GetAddressMap(); 355 AddressMap map = tracker->GetAddressMap();
353 for (AddressMap::const_iterator it = map.begin(); it != map.end(); ++it) { 356 for (AddressMap::const_iterator it = map.begin(); it != map.end(); ++it) {
354 const IPAddressNumber& address = it->first; 357 const IPAddressNumber& address = it->first;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 } 422 }
420 423
421 // static 424 // static
422 scoped_ptr<AddressSorter> AddressSorter::CreateAddressSorter() { 425 scoped_ptr<AddressSorter> AddressSorter::CreateAddressSorter() {
423 return scoped_ptr<AddressSorter>( 426 return scoped_ptr<AddressSorter>(
424 new AddressSorterPosix(ClientSocketFactory::GetDefaultFactory())); 427 new AddressSorterPosix(ClientSocketFactory::GetDefaultFactory()));
425 } 428 }
426 429
427 } // namespace net 430 } // namespace net
428 431
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698