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

Side by Side Diff: ppapi/cpp/private/net_address_private.cc

Issue 9722008: Add CreateFromIPv[46]Address() in PPB_NetAddress_Private. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ppapi/cpp/private/net_address_private.h" 5 #include "ppapi/cpp/private/net_address_private.h"
6 6
7 #include "ppapi/c/pp_bool.h" 7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/cpp/module.h" 8 #include "ppapi/cpp/module.h"
9 #include "ppapi/cpp/module_impl.h" 9 #include "ppapi/cpp/module_impl.h"
10 #include "ppapi/cpp/var.h" 10 #include "ppapi/cpp/var.h"
11 11
12 namespace pp { 12 namespace pp {
13 13
14 namespace { 14 namespace {
15 15
16 template <> const char* interface_name<PPB_NetAddress_Private_1_1>() {
17 return PPB_NETADDRESS_PRIVATE_INTERFACE_1_1;
18 }
19
16 template <> const char* interface_name<PPB_NetAddress_Private_1_0>() { 20 template <> const char* interface_name<PPB_NetAddress_Private_1_0>() {
17 return PPB_NETADDRESS_PRIVATE_INTERFACE_1_0; 21 return PPB_NETADDRESS_PRIVATE_INTERFACE_1_0;
18 } 22 }
19 23
20 template <> const char* interface_name<PPB_NetAddress_Private_0_1>() { 24 template <> const char* interface_name<PPB_NetAddress_Private_0_1>() {
21 return PPB_NETADDRESS_PRIVATE_INTERFACE_0_1; 25 return PPB_NETADDRESS_PRIVATE_INTERFACE_0_1;
22 } 26 }
23 27
24 } // namespace 28 } // namespace
25 29
26 // static 30 // static
27 bool NetAddressPrivate::IsAvailable() { 31 bool NetAddressPrivate::IsAvailable() {
28 return has_interface<PPB_NetAddress_Private_1_0>() || 32 return has_interface<PPB_NetAddress_Private_1_1>() ||
29 has_interface<PPB_NetAddress_Private_0_1>(); 33 has_interface<PPB_NetAddress_Private_1_0>() ||
34 has_interface<PPB_NetAddress_Private_0_1>();
30 } 35 }
31 36
32 // static 37 // static
33 bool NetAddressPrivate::AreEqual(const PP_NetAddress_Private& addr1, 38 bool NetAddressPrivate::AreEqual(const PP_NetAddress_Private& addr1,
34 const PP_NetAddress_Private& addr2) { 39 const PP_NetAddress_Private& addr2) {
40 if (has_interface<PPB_NetAddress_Private_1_1>()) {
41 return !!get_interface<PPB_NetAddress_Private_1_1>()->AreEqual(&addr1,
42 &addr2);
43 }
35 if (has_interface<PPB_NetAddress_Private_1_0>()) { 44 if (has_interface<PPB_NetAddress_Private_1_0>()) {
36 return !!get_interface<PPB_NetAddress_Private_1_0>()->AreEqual(&addr1, 45 return !!get_interface<PPB_NetAddress_Private_1_0>()->AreEqual(&addr1,
37 &addr2); 46 &addr2);
38 } 47 }
39 if (has_interface<PPB_NetAddress_Private_0_1>()) { 48 if (has_interface<PPB_NetAddress_Private_0_1>()) {
40 return !!get_interface<PPB_NetAddress_Private_0_1>()->AreEqual(&addr1, 49 return !!get_interface<PPB_NetAddress_Private_0_1>()->AreEqual(&addr1,
41 &addr2); 50 &addr2);
42 } 51 }
43 return false; 52 return false;
44 } 53 }
45 54
46 // static 55 // static
47 bool NetAddressPrivate::AreHostsEqual(const PP_NetAddress_Private& addr1, 56 bool NetAddressPrivate::AreHostsEqual(const PP_NetAddress_Private& addr1,
48 const PP_NetAddress_Private& addr2) { 57 const PP_NetAddress_Private& addr2) {
58 if (has_interface<PPB_NetAddress_Private_1_1>()) {
59 return !!get_interface<PPB_NetAddress_Private_1_1>()->AreHostsEqual(&addr1,
60 &addr2);
61 }
49 if (has_interface<PPB_NetAddress_Private_1_0>()) { 62 if (has_interface<PPB_NetAddress_Private_1_0>()) {
50 return !!get_interface<PPB_NetAddress_Private_1_0>()->AreHostsEqual(&addr1, 63 return !!get_interface<PPB_NetAddress_Private_1_0>()->AreHostsEqual(&addr1,
51 &addr2); 64 &addr2);
52 } 65 }
53 if (has_interface<PPB_NetAddress_Private_0_1>()) { 66 if (has_interface<PPB_NetAddress_Private_0_1>()) {
54 return !!get_interface<PPB_NetAddress_Private_0_1>()->AreHostsEqual(&addr1, 67 return !!get_interface<PPB_NetAddress_Private_0_1>()->AreHostsEqual(&addr1,
55 &addr2); 68 &addr2);
56 } 69 }
57 return false; 70 return false;
58 } 71 }
59 72
60 // static 73 // static
61 std::string NetAddressPrivate::Describe(const PP_NetAddress_Private& addr, 74 std::string NetAddressPrivate::Describe(const PP_NetAddress_Private& addr,
62 bool include_port) { 75 bool include_port) {
63 Module* module = Module::Get(); 76 Module* module = Module::Get();
64 if (!module) 77 if (!module)
65 return std::string(); 78 return std::string();
66 79
67 PP_Var result_pp_var = PP_MakeUndefined(); 80 PP_Var result_pp_var = PP_MakeUndefined();
68 if (has_interface<PPB_NetAddress_Private_1_0>()) { 81 if (has_interface<PPB_NetAddress_Private_1_1>()) {
82 result_pp_var = get_interface<PPB_NetAddress_Private_1_1>()->Describe(
83 module->pp_module(),
84 &addr,
85 PP_FromBool(include_port));
86 } else if (has_interface<PPB_NetAddress_Private_1_0>()) {
69 result_pp_var = get_interface<PPB_NetAddress_Private_1_0>()->Describe( 87 result_pp_var = get_interface<PPB_NetAddress_Private_1_0>()->Describe(
70 module->pp_module(), 88 module->pp_module(),
71 &addr, 89 &addr,
72 PP_FromBool(include_port)); 90 PP_FromBool(include_port));
73 } else if (has_interface<PPB_NetAddress_Private_0_1>()) { 91 } else if (has_interface<PPB_NetAddress_Private_0_1>()) {
74 result_pp_var = get_interface<PPB_NetAddress_Private_0_1>()->Describe( 92 result_pp_var = get_interface<PPB_NetAddress_Private_0_1>()->Describe(
75 module->pp_module(), 93 module->pp_module(),
76 &addr, 94 &addr,
77 PP_FromBool(include_port)); 95 PP_FromBool(include_port));
78 } 96 }
79 97
80 Var result(PASS_REF, result_pp_var); 98 Var result(PASS_REF, result_pp_var);
81 return result.is_string() ? result.AsString() : std::string(); 99 return result.is_string() ? result.AsString() : std::string();
82 } 100 }
83 101
84 // static 102 // static
85 bool NetAddressPrivate::ReplacePort(const PP_NetAddress_Private& addr_in, 103 bool NetAddressPrivate::ReplacePort(const PP_NetAddress_Private& addr_in,
86 uint16_t port, 104 uint16_t port,
87 PP_NetAddress_Private* addr_out) { 105 PP_NetAddress_Private* addr_out) {
106 if (has_interface<PPB_NetAddress_Private_1_1>()) {
107 return !!get_interface<PPB_NetAddress_Private_1_1>()->ReplacePort(&addr_in,
108 port,
109 addr_out);
110 }
88 if (has_interface<PPB_NetAddress_Private_1_0>()) { 111 if (has_interface<PPB_NetAddress_Private_1_0>()) {
89 return !!get_interface<PPB_NetAddress_Private_1_0>()->ReplacePort(&addr_in, 112 return !!get_interface<PPB_NetAddress_Private_1_0>()->ReplacePort(&addr_in,
90 port, 113 port,
91 addr_out); 114 addr_out);
92 } 115 }
93 if (has_interface<PPB_NetAddress_Private_0_1>()) { 116 if (has_interface<PPB_NetAddress_Private_0_1>()) {
94 return !!get_interface<PPB_NetAddress_Private_0_1>()->ReplacePort(&addr_in, 117 return !!get_interface<PPB_NetAddress_Private_0_1>()->ReplacePort(&addr_in,
95 port, 118 port,
96 addr_out); 119 addr_out);
97 } 120 }
98 return false; 121 return false;
99 } 122 }
100 123
101 // static 124 // static
102 void NetAddressPrivate::GetAnyAddress(bool is_ipv6, 125 bool NetAddressPrivate::GetAnyAddress(bool is_ipv6,
103 PP_NetAddress_Private* addr) { 126 PP_NetAddress_Private* addr) {
104 if (has_interface<PPB_NetAddress_Private_1_0>()) { 127 if (has_interface<PPB_NetAddress_Private_1_1>()) {
128 get_interface<PPB_NetAddress_Private_1_1>()->GetAnyAddress(
129 PP_FromBool(is_ipv6),
130 addr);
131 return true;
132 } else if (has_interface<PPB_NetAddress_Private_1_0>()) {
105 get_interface<PPB_NetAddress_Private_1_0>()->GetAnyAddress( 133 get_interface<PPB_NetAddress_Private_1_0>()->GetAnyAddress(
106 PP_FromBool(is_ipv6), 134 PP_FromBool(is_ipv6),
107 addr); 135 addr);
136 return true;
108 } else if (has_interface<PPB_NetAddress_Private_0_1>()) { 137 } else if (has_interface<PPB_NetAddress_Private_0_1>()) {
109 get_interface<PPB_NetAddress_Private_0_1>()->GetAnyAddress( 138 get_interface<PPB_NetAddress_Private_0_1>()->GetAnyAddress(
110 PP_FromBool(is_ipv6), 139 PP_FromBool(is_ipv6),
111 addr); 140 addr);
141 return true;
112 } 142 }
143 return false;
113 } 144 }
114 145
115 // static 146 // static
116 PP_NetAddressFamily_Private NetAddressPrivate::GetFamily( 147 PP_NetAddressFamily_Private NetAddressPrivate::GetFamily(
117 const PP_NetAddress_Private& addr) { 148 const PP_NetAddress_Private& addr) {
149 if (has_interface<PPB_NetAddress_Private_1_1>())
150 return get_interface<PPB_NetAddress_Private_1_1>()->GetFamily(&addr);
118 if (has_interface<PPB_NetAddress_Private_1_0>()) 151 if (has_interface<PPB_NetAddress_Private_1_0>())
119 return get_interface<PPB_NetAddress_Private_1_0>()->GetFamily(&addr); 152 return get_interface<PPB_NetAddress_Private_1_0>()->GetFamily(&addr);
120 return PP_NETADDRESSFAMILY_UNSPECIFIED; 153 return PP_NETADDRESSFAMILY_UNSPECIFIED;
121 } 154 }
122 155
123 // static 156 // static
124 uint16_t NetAddressPrivate::GetPort(const PP_NetAddress_Private& addr) { 157 uint16_t NetAddressPrivate::GetPort(const PP_NetAddress_Private& addr) {
158 if (has_interface<PPB_NetAddress_Private_1_1>())
159 return get_interface<PPB_NetAddress_Private_1_1>()->GetPort(&addr);
125 if (has_interface<PPB_NetAddress_Private_1_0>()) 160 if (has_interface<PPB_NetAddress_Private_1_0>())
126 return get_interface<PPB_NetAddress_Private_1_0>()->GetPort(&addr); 161 return get_interface<PPB_NetAddress_Private_1_0>()->GetPort(&addr);
127 return 0; 162 return 0;
128 } 163 }
129 164
130 // static 165 // static
131 bool NetAddressPrivate::GetAddress(const PP_NetAddress_Private& addr, 166 bool NetAddressPrivate::GetAddress(const PP_NetAddress_Private& addr,
132 void* address, 167 void* address,
133 uint16_t address_size) { 168 uint16_t address_size) {
169 if (has_interface<PPB_NetAddress_Private_1_1>()) {
170 return PP_ToBool(get_interface<PPB_NetAddress_Private_1_1>()->GetAddress(
171 &addr,
172 address,
173 address_size));
174 }
134 if (has_interface<PPB_NetAddress_Private_1_0>()) { 175 if (has_interface<PPB_NetAddress_Private_1_0>()) {
135 return PP_ToBool(get_interface<PPB_NetAddress_Private_1_0>()->GetAddress( 176 return PP_ToBool(get_interface<PPB_NetAddress_Private_1_0>()->GetAddress(
136 &addr, 177 &addr,
137 address, 178 address,
138 address_size)); 179 address_size));
139 } 180 }
140 return false; 181 return false;
141 } 182 }
142 183
184 // static
185 uint32_t NetAddressPrivate::GetScopeID(const PP_NetAddress_Private& addr) {
186 if (has_interface<PPB_NetAddress_Private_1_1>())
187 return get_interface<PPB_NetAddress_Private_1_1>()->GetScopeID(&addr);
188 return 0;
189 }
190
191 // static
192 bool NetAddressPrivate::CreateFromIPv4Address(
193 const uint8_t ip[4],
194 uint16_t port,
195 struct PP_NetAddress_Private* addr_out) {
196 if (has_interface<PPB_NetAddress_Private_1_1>()) {
197 get_interface<PPB_NetAddress_Private_1_1>()->CreateFromIPv4Address(
198 ip, port, addr_out);
199 return true;
200 }
201 return false;
202 }
203
204 // static
205 bool NetAddressPrivate::CreateFromIPv6Address(
206 const uint8_t ip[16],
207 uint32_t scope_id,
208 uint16_t port,
209 struct PP_NetAddress_Private* addr_out) {
210 if (has_interface<PPB_NetAddress_Private_1_1>()) {
211 get_interface<PPB_NetAddress_Private_1_1>()->CreateFromIPv6Address(
212 ip, scope_id, port, addr_out);
213 return true;
214 }
215 return false;
216 }
217
143 } // namespace pp 218 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/cpp/private/net_address_private.h ('k') | ppapi/shared_impl/private/net_address_private_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698