| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/local_discovery/service_discovery_client_mdns.h" | 5 #include "chrome/browser/local_discovery/service_discovery_client_mdns.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/location.h" | 11 #include "base/location.h" |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
| 15 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
| 16 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
| 17 #include "chrome/browser/local_discovery/service_discovery_client_impl.h" | 17 #include "chrome/browser/local_discovery/service_discovery_client_impl.h" |
| 18 #include "content/public/browser/browser_thread.h" | 18 #include "content/public/browser/browser_thread.h" |
| 19 #include "net/dns/mdns_client.h" | 19 #include "net/dns/mdns_client.h" |
| 20 #include "net/udp/datagram_server_socket.h" | 20 #include "net/udp/datagram_server_socket.h" |
| 21 | 21 |
| 22 namespace net { | |
| 23 class IPAddress; | |
| 24 } | |
| 25 | |
| 26 namespace local_discovery { | 22 namespace local_discovery { |
| 27 | 23 |
| 28 using content::BrowserThread; | 24 using content::BrowserThread; |
| 29 | 25 |
| 30 // Base class for objects returned by ServiceDiscoveryClient implementation. | 26 // Base class for objects returned by ServiceDiscoveryClient implementation. |
| 31 // Handles interaction of client code on UI thread end net code on mdns thread. | 27 // Handles interaction of client code on UI thread end net code on mdns thread. |
| 32 class ServiceDiscoveryClientMdns::Proxy { | 28 class ServiceDiscoveryClientMdns::Proxy { |
| 33 public: | 29 public: |
| 34 typedef base::WeakPtr<Proxy> WeakPtr; | 30 typedef base::WeakPtr<Proxy> WeakPtr; |
| 35 | 31 |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 if (implementation()) { | 301 if (implementation()) { |
| 306 PostToMdnsThread(base::Bind(&LocalDomainResolver::Start, | 302 PostToMdnsThread(base::Bind(&LocalDomainResolver::Start, |
| 307 base::Unretained(implementation()))); | 303 base::Unretained(implementation()))); |
| 308 } | 304 } |
| 309 }; | 305 }; |
| 310 | 306 |
| 311 private: | 307 private: |
| 312 static void OnCallback(const WeakPtr& proxy, | 308 static void OnCallback(const WeakPtr& proxy, |
| 313 const LocalDomainResolver::IPAddressCallback& callback, | 309 const LocalDomainResolver::IPAddressCallback& callback, |
| 314 bool a1, | 310 bool a1, |
| 315 const net::IPAddress& a2, | 311 const net::IPAddressNumber& a2, |
| 316 const net::IPAddress& a3) { | 312 const net::IPAddressNumber& a3) { |
| 317 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); | 313 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 318 PostToUIThread(base::Bind(&Base::RunCallback, proxy, | 314 PostToUIThread(base::Bind(&Base::RunCallback, proxy, |
| 319 base::Bind(callback, a1, a2, a3))); | 315 base::Bind(callback, a1, a2, a3))); |
| 320 } | 316 } |
| 321 | 317 |
| 322 DISALLOW_COPY_AND_ASSIGN(LocalDomainResolverProxy); | 318 DISALLOW_COPY_AND_ASSIGN(LocalDomainResolverProxy); |
| 323 }; | 319 }; |
| 324 | 320 |
| 325 } // namespace | 321 } // namespace |
| 326 | 322 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 OnBeforeMdnsDestroy(); | 439 OnBeforeMdnsDestroy(); |
| 444 // After calling |Proxy::OnMdnsDestroy| all references to client_ and mdns_ | 440 // After calling |Proxy::OnMdnsDestroy| all references to client_ and mdns_ |
| 445 // should be destroyed. | 441 // should be destroyed. |
| 446 if (client_) | 442 if (client_) |
| 447 mdns_runner_->DeleteSoon(FROM_HERE, client_.release()); | 443 mdns_runner_->DeleteSoon(FROM_HERE, client_.release()); |
| 448 if (mdns_) | 444 if (mdns_) |
| 449 mdns_runner_->DeleteSoon(FROM_HERE, mdns_.release()); | 445 mdns_runner_->DeleteSoon(FROM_HERE, mdns_.release()); |
| 450 } | 446 } |
| 451 | 447 |
| 452 } // namespace local_discovery | 448 } // namespace local_discovery |
| OLD | NEW |