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

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

Issue 862813002: WIP: Prototype OOP V8 PAC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Slight cleanup and report JS memory usage. Created 5 years, 10 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
« no previous file with comments | « net/dns/host_resolver_mojo_host.h ('k') | net/net.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "mojo/common/common_type_converters.h"
6 #include "net/base/net_errors.h"
7 #include "net/dns/host_resolver_mojo_host.h"
8 #include "url/gurl.h"
9
10 namespace net {
11
12 class HostResolverMojoHost::Job : public mojo::ErrorHandler {
13 public:
14 Job(HostResolver* resolver,
15 const HostResolver::RequestInfo& request_info,
16 dns::ResolveRequestClientPtr client);
17
18 private:
19 void OnResolveDone(int32_t result);
20
21 // mojo::ErrorHandler override.
22 void OnConnectionError() override;
23
24 HostResolver* resolver_;
25 dns::ResolveRequestClientPtr client_;
26 HostResolver::RequestHandle handle_;
27 AddressList result_;
28 BoundNetLog net_log_;
29 std::string target_;
30 };
31
32 HostResolverMojoHost::HostResolverMojoHost(HostResolver* resolver)
33 : resolver_(resolver) {
34 }
35
36 void HostResolverMojoHost::Resolve(dns::RequestInfoPtr request_info,
37 dns::ResolveRequestClientPtr client) {
38 new Job(resolver_, request_info->To<HostResolver::RequestInfo>(),
39 client.Pass());
40 }
41
42 HostResolverMojoHost::Job::Job(HostResolver* resolver,
43 const HostResolver::RequestInfo& request_info,
44 dns::ResolveRequestClientPtr client)
45 : resolver_(resolver),
46 client_(client.Pass()),
47 handle_(nullptr),
48 target_(request_info.host_port_pair().ToString()) {
49 VLOG(1) << "Resolve " << request_info.host_port_pair().ToString();
50 int32_t result =
51 resolver_->Resolve(request_info, DEFAULT_PRIORITY, &result_,
52 base::Bind(&HostResolverMojoHost::Job::OnResolveDone,
53 base::Unretained(this)),
54 &handle_, net_log_);
55 if (result != ERR_IO_PENDING)
56 OnResolveDone(result);
57 }
58
59 void HostResolverMojoHost::Job::OnResolveDone(int32_t result) {
60 VLOG(1) << "Resolved " << target_ << " with error " << result << " and "
61 << result_.size() << " results!";
62 for (const auto& address : result_) {
63 VLOG(1) << address.ToString();
64 }
65 if (result)
66 client_->ReportError(result);
67 else
68 client_->ReportResult(dns::AddressList::From(result_));
69 delete this;
70 }
71
72 void HostResolverMojoHost::Job::OnConnectionError() {
73 resolver_->CancelRequest(handle_);
74 delete this;
75 }
76
77 } // namespace net
78
79 namespace mojo {
80
81 // static
82 net::HostResolver::RequestInfo
83 TypeConverter<net::HostResolver::RequestInfo, net::dns::RequestInfo>::Convert(
84 const net::dns::RequestInfo& obj) {
85 net::HostResolver::RequestInfo result(
86 net::HostPortPair::FromString(obj.host_port_pair));
87 result.set_address_family(
88 static_cast<net::AddressFamily>(obj.address_family));
89 return result;
90 }
91
92 // static
93 net::dns::AddressListPtr
94 TypeConverter<net::dns::AddressListPtr, net::AddressList>::Convert(
95 const net::AddressList& obj) {
96 net::dns::AddressListPtr result(net::dns::AddressList::New());
97 result->canonical_name = obj.canonical_name();
98 for (const auto& endpoint : obj) {
99 const auto& address = endpoint.address();
100 mojo::Array<uint8_t> serialized_address(address.size());
101 std::copy(address.begin(), address.end(), &serialized_address[0]);
102 result->addresses.push_back(serialized_address.Pass());
103 }
104 return result.Pass();
105 }
106
107 } // namespace mojo
OLDNEW
« no previous file with comments | « net/dns/host_resolver_mojo_host.h ('k') | net/net.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698