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

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

Issue 904313003: Implement utility-side host resolver Mojo client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-proxy-resolver
Patch Set: 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/mojo_type_converters.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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 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/mojo_type_converters.h" 5 #include "net/dns/mojo_type_converters.h"
6 6
7 #include "net/base/address_list.h" 7 #include "net/base/address_list.h"
8 #include "net/base/net_util.h" 8 #include "net/base/net_util.h"
9 #include "third_party/mojo/src/mojo/public/cpp/bindings/type_converter.h" 9 #include "third_party/mojo/src/mojo/public/cpp/bindings/type_converter.h"
10 10
11 namespace net {
12 namespace {
13
14 AddressFamily AddressFamilyFromMojo(interfaces::AddressFamily address_family) {
15 switch (address_family) {
16 case interfaces::ADDRESS_FAMILY_UNSPECIFIED:
17 return ADDRESS_FAMILY_UNSPECIFIED;
18 case interfaces::ADDRESS_FAMILY_IPV4:
19 return ADDRESS_FAMILY_IPV4;
20 case interfaces::ADDRESS_FAMILY_IPV6:
21 return ADDRESS_FAMILY_IPV6;
22 }
23 NOTREACHED();
24 return ADDRESS_FAMILY_UNSPECIFIED;
25 }
26
27 interfaces::AddressFamily AddressFamilyToMojo(AddressFamily address_family) {
28 switch (address_family) {
29 case ADDRESS_FAMILY_UNSPECIFIED:
30 return interfaces::ADDRESS_FAMILY_UNSPECIFIED;
31 case ADDRESS_FAMILY_IPV4:
32 return interfaces::ADDRESS_FAMILY_IPV4;
33 case ADDRESS_FAMILY_IPV6:
34 return interfaces::ADDRESS_FAMILY_IPV6;
35 }
36 NOTREACHED();
37 return interfaces::ADDRESS_FAMILY_UNSPECIFIED;
38 }
39
40 } // namespace
41 } // namespace net
42
11 namespace mojo { 43 namespace mojo {
12 44
13 // static 45 // static
14 net::HostResolver::RequestInfo 46 net::HostResolver::RequestInfo
15 TypeConverter<net::HostResolver::RequestInfo, 47 TypeConverter<net::HostResolver::RequestInfo,
16 net::interfaces::HostResolverRequestInfo>:: 48 net::interfaces::HostResolverRequestInfo>::
17 Convert(const net::interfaces::HostResolverRequestInfo& obj) { 49 Convert(const net::interfaces::HostResolverRequestInfo& obj) {
18 net::HostResolver::RequestInfo result(net::HostPortPair(obj.host, obj.port)); 50 net::HostResolver::RequestInfo result(net::HostPortPair(obj.host, obj.port));
19 result.set_address_family( 51 result.set_address_family(net::AddressFamilyFromMojo(obj.address_family));
20 static_cast<net::AddressFamily>(obj.address_family)); 52 result.set_is_my_ip_address(obj.is_my_ip_address);
21 return result; 53 return result;
22 } 54 }
23 55
24 // static 56 // static
57 net::interfaces::HostResolverRequestInfoPtr
58 TypeConverter<net::interfaces::HostResolverRequestInfoPtr,
59 net::HostResolver::RequestInfo>::
60 Convert(const net::HostResolver::RequestInfo& obj) {
61 net::interfaces::HostResolverRequestInfoPtr result(
62 net::interfaces::HostResolverRequestInfo::New());
63 result->host = obj.hostname();
64 result->port = obj.port();
65 result->address_family = net::AddressFamilyToMojo(obj.address_family());
66 result->is_my_ip_address = obj.is_my_ip_address();
67 return result.Pass();
68 }
69
70 // static
25 net::interfaces::AddressListPtr 71 net::interfaces::AddressListPtr
26 TypeConverter<net::interfaces::AddressListPtr, net::AddressList>::Convert( 72 TypeConverter<net::interfaces::AddressListPtr, net::AddressList>::Convert(
27 const net::AddressList& obj) { 73 const net::AddressList& obj) {
28 net::interfaces::AddressListPtr result(net::interfaces::AddressList::New()); 74 net::interfaces::AddressListPtr result(net::interfaces::AddressList::New());
29 for (const auto& endpoint : obj) { 75 for (const auto& endpoint : obj) {
30 net::interfaces::IPEndPointPtr ep(net::interfaces::IPEndPoint::New()); 76 net::interfaces::IPEndPointPtr ep(net::interfaces::IPEndPoint::New());
31 ep->port = endpoint.port(); 77 ep->port = endpoint.port();
32 ep->address = mojo::Array<uint8_t>::From(endpoint.address()); 78 ep->address = mojo::Array<uint8_t>::From(endpoint.address());
33 result->addresses.push_back(ep.Pass()); 79 result->addresses.push_back(ep.Pass());
34 } 80 }
35 return result.Pass(); 81 return result.Pass();
36 } 82 }
37 83
38 // static 84 // static
39 net::AddressList 85 net::AddressList
40 TypeConverter<net::AddressList, net::interfaces::AddressList>::Convert( 86 TypeConverter<net::AddressList, net::interfaces::AddressList>::Convert(
41 const net::interfaces::AddressList& obj) { 87 const net::interfaces::AddressList& obj) {
42 net::AddressList address_list; 88 net::AddressList address_list;
43 for (size_t i = 0; i < obj.addresses.size(); i++) { 89 for (size_t i = 0; i < obj.addresses.size(); i++) {
44 const net::interfaces::IPEndPointPtr& ep = obj.addresses[i]; 90 const net::interfaces::IPEndPointPtr& ep = obj.addresses[i];
45 address_list.push_back( 91 address_list.push_back(
46 net::IPEndPoint(ep->address.To<net::IPAddressNumber>(), ep->port)); 92 net::IPEndPoint(ep->address.To<net::IPAddressNumber>(), ep->port));
47 } 93 }
48 return address_list; 94 return address_list;
49 } 95 }
50 96
51 } // namespace mojo 97 } // namespace mojo
OLDNEW
« no previous file with comments | « net/dns/mojo_type_converters.h ('k') | net/net.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698