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

Side by Side Diff: net/dns/host_resolver_mojo.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.h ('k') | net/dns/host_resolver_mojo_host.h » ('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 "net/dns/host_resolver_mojo.h"
6
7 #include "net/base/net_errors.h"
8
9 namespace net {
10
11 class HostResolverMojo::Job
12 : public mojo::InterfaceImpl<dns::ResolveRequestClient> {
13 public:
14 Job(AddressList* addresses, const CompletionCallback& callback);
15
16 private:
17 void ReportResult(dns::AddressListPtr address_list) override;
18 void ReportError(int32_t error) override;
19
20 void OnConnectionError() override;
21
22 AddressList* addresses_;
23 CompletionCallback callback_;
24 };
25
26 HostResolverMojo::HostResolverMojo(dns::ResolverPtr resolver)
27 : resolver_(resolver.Pass()) {
28 }
29
30 HostResolverMojo::~HostResolverMojo() = default;
31
32 int HostResolverMojo::Resolve(const RequestInfo& info,
33 RequestPriority priority,
34 AddressList* addresses,
35 const CompletionCallback& callback,
36 RequestHandle* out_req,
37 const BoundNetLog& source_net_log) {
38 VLOG(1) << "Resolve " << info.host_port_pair().ToString();
39 mojo::InterfacePtr<dns::ResolveRequestClient> handle;
40 *out_req = mojo::WeakBindToProxy(new Job(addresses, callback), &handle);
41 resolver_->Resolve(dns::RequestInfo::From(info), handle.Pass());
42 return ERR_IO_PENDING;
43 }
44
45 int HostResolverMojo::ResolveFromCache(const RequestInfo& info,
46 AddressList* addresses,
47 const BoundNetLog& source_net_log) {
48 VLOG(1) << "ResolveFromCache " << info.host_port_pair().ToString();
49 return ERR_FAILED;
50 }
51
52 void HostResolverMojo::CancelRequest(RequestHandle req) {
53 delete static_cast<Job*>(req);
54 }
55
56 HostResolverMojo::Job::Job(AddressList* addresses,
57 const CompletionCallback& callback)
58 : addresses_(addresses), callback_(callback) {
59 }
60
61 void HostResolverMojo::Job::ReportResult(dns::AddressListPtr address_list) {
62 *addresses_ = address_list->To<AddressList>();
63 ReportError(0);
64 }
65
66 void HostResolverMojo::Job::ReportError(int32_t error) {
67 callback_.Run(error);
68 delete this;
69 }
70
71 void HostResolverMojo::Job::OnConnectionError() {
72 ReportError(ERR_FAILED);
73 }
74
75 } // namespace net
76
77 namespace mojo {
78
79 // static
80 net::dns::RequestInfoPtr
81 TypeConverter<net::dns::RequestInfoPtr, net::HostResolver::RequestInfo>::
82 Convert(const net::HostResolver::RequestInfo& obj) {
83 net::dns::RequestInfoPtr result(net::dns::RequestInfo::New());
84 result->host_port_pair = obj.host_port_pair().ToString();
85 result->address_family = obj.address_family();
86
87 return result.Pass();
88 }
89
90 // static
91 net::AddressList
92 TypeConverter<net::AddressList, net::dns::AddressList>::Convert(
93 const net::dns::AddressList& obj) {
94 net::IPAddressList addresses;
95 addresses.resize(obj.addresses.size());
96 for (size_t i = 0; i < obj.addresses.size(); i++) {
97 const auto& serialized_address = obj.addresses[i];
98 net::IPAddressNumber& address = addresses[i];
99 address.resize(serialized_address.size());
100 std::copy(&serialized_address[0],
101 &serialized_address[serialized_address.size() - 1],
102 address.begin());
103 }
104 return net::AddressList::CreateFromIPAddressList(addresses,
105 obj.canonical_name);
106 }
107
108 } // namespace mojo
OLDNEW
« no previous file with comments | « net/dns/host_resolver_mojo.h ('k') | net/dns/host_resolver_mojo_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698