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

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

Issue 2083463002: Replace //net TypeConverters with StructTraits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@type-converter-cleanup--gurl
Patch Set: rebase Created 4 years, 2 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
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/mojo_host_type_converters.h"
6
7 #include <utility>
8
9 #include "mojo/public/cpp/bindings/type_converter.h"
10 #include "net/base/address_list.h"
11
12 namespace net {
13 namespace {
14
15 AddressFamily AddressFamilyFromMojo(interfaces::AddressFamily address_family) {
16 switch (address_family) {
17 case interfaces::AddressFamily::UNSPECIFIED:
18 return ADDRESS_FAMILY_UNSPECIFIED;
19 case interfaces::AddressFamily::IPV4:
20 return ADDRESS_FAMILY_IPV4;
21 case interfaces::AddressFamily::IPV6:
22 return ADDRESS_FAMILY_IPV6;
23 }
24 NOTREACHED();
25 return ADDRESS_FAMILY_UNSPECIFIED;
26 }
27
28 interfaces::AddressFamily AddressFamilyToMojo(AddressFamily address_family) {
29 switch (address_family) {
30 case ADDRESS_FAMILY_UNSPECIFIED:
31 return interfaces::AddressFamily::UNSPECIFIED;
32 case ADDRESS_FAMILY_IPV4:
33 return interfaces::AddressFamily::IPV4;
34 case ADDRESS_FAMILY_IPV6:
35 return interfaces::AddressFamily::IPV6;
36 }
37 NOTREACHED();
38 return interfaces::AddressFamily::UNSPECIFIED;
39 }
40
41 } // namespace
42 } // namespace net
43
44 namespace mojo {
45
46 // static
47 net::HostResolver::RequestInfo
48 TypeConverter<net::HostResolver::RequestInfo,
49 net::interfaces::HostResolverRequestInfo>::
50 Convert(const net::interfaces::HostResolverRequestInfo& obj) {
51 net::HostResolver::RequestInfo result(net::HostPortPair(obj.host, obj.port));
52 result.set_address_family(net::AddressFamilyFromMojo(obj.address_family));
53 result.set_is_my_ip_address(obj.is_my_ip_address);
54 return result;
55 }
56
57 // static
58 net::interfaces::HostResolverRequestInfoPtr
59 TypeConverter<net::interfaces::HostResolverRequestInfoPtr,
60 net::HostResolver::RequestInfo>::
61 Convert(const net::HostResolver::RequestInfo& obj) {
62 net::interfaces::HostResolverRequestInfoPtr result(
63 net::interfaces::HostResolverRequestInfo::New());
64 result->host = obj.hostname();
65 result->port = obj.port();
66 result->address_family = net::AddressFamilyToMojo(obj.address_family());
67 result->is_my_ip_address = obj.is_my_ip_address();
68 return result;
69 }
70
71 // static
72 net::interfaces::AddressListPtr
73 TypeConverter<net::interfaces::AddressListPtr, net::AddressList>::Convert(
74 const net::AddressList& obj) {
75 net::interfaces::AddressListPtr result(net::interfaces::AddressList::New());
76 for (const auto& endpoint : obj) {
77 net::interfaces::IPEndPointPtr ep(net::interfaces::IPEndPoint::New());
78 ep->port = endpoint.port();
79 ep->address = mojo::Array<uint8_t>::From(endpoint.address().bytes());
80 result->addresses.push_back(std::move(ep));
81 }
82 return result;
83 }
84
85 // static
86 net::AddressList
87 TypeConverter<net::AddressList, net::interfaces::AddressList>::Convert(
88 const net::interfaces::AddressList& obj) {
89 net::AddressList address_list;
90 for (size_t i = 0; i < obj.addresses.size(); i++) {
91 const net::interfaces::IPEndPointPtr& ep = obj.addresses[i];
92 net::IPAddress ip_address(ep->address.To<std::vector<uint8_t>>());
93 address_list.push_back(net::IPEndPoint(ip_address, ep->port));
94 }
95 return address_list;
96 }
97
98 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698