summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp/private/net_address_private.cc
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 22:41:06 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 22:41:06 +0000
commitb13deef887384a4d8ff51ff6027128d0ffeeacfc (patch)
treea62578ff4d767ccc81657c50d97514086ec3c311 /ppapi/cpp/private/net_address_private.cc
parentf497f0c6437d077911e6569789616754528e8a51 (diff)
downloadchromium_src-b13deef887384a4d8ff51ff6027128d0ffeeacfc.zip
chromium_src-b13deef887384a4d8ff51ff6027128d0ffeeacfc.tar.gz
chromium_src-b13deef887384a4d8ff51ff6027128d0ffeeacfc.tar.bz2
Add CreateFromIPv[46]Address() in PPB_NetAddress_Private.
Review URL: http://codereview.chromium.org/9722008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128322 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp/private/net_address_private.cc')
-rw-r--r--ppapi/cpp/private/net_address_private.cc85
1 files changed, 80 insertions, 5 deletions
diff --git a/ppapi/cpp/private/net_address_private.cc b/ppapi/cpp/private/net_address_private.cc
index 1da2115..0e881c7 100644
--- a/ppapi/cpp/private/net_address_private.cc
+++ b/ppapi/cpp/private/net_address_private.cc
@@ -13,6 +13,10 @@ namespace pp {
namespace {
+template <> const char* interface_name<PPB_NetAddress_Private_1_1>() {
+ return PPB_NETADDRESS_PRIVATE_INTERFACE_1_1;
+}
+
template <> const char* interface_name<PPB_NetAddress_Private_1_0>() {
return PPB_NETADDRESS_PRIVATE_INTERFACE_1_0;
}
@@ -25,13 +29,18 @@ template <> const char* interface_name<PPB_NetAddress_Private_0_1>() {
// static
bool NetAddressPrivate::IsAvailable() {
- return has_interface<PPB_NetAddress_Private_1_0>() ||
- has_interface<PPB_NetAddress_Private_0_1>();
+ return has_interface<PPB_NetAddress_Private_1_1>() ||
+ has_interface<PPB_NetAddress_Private_1_0>() ||
+ has_interface<PPB_NetAddress_Private_0_1>();
}
// static
bool NetAddressPrivate::AreEqual(const PP_NetAddress_Private& addr1,
const PP_NetAddress_Private& addr2) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ return !!get_interface<PPB_NetAddress_Private_1_1>()->AreEqual(&addr1,
+ &addr2);
+ }
if (has_interface<PPB_NetAddress_Private_1_0>()) {
return !!get_interface<PPB_NetAddress_Private_1_0>()->AreEqual(&addr1,
&addr2);
@@ -46,6 +55,10 @@ bool NetAddressPrivate::AreEqual(const PP_NetAddress_Private& addr1,
// static
bool NetAddressPrivate::AreHostsEqual(const PP_NetAddress_Private& addr1,
const PP_NetAddress_Private& addr2) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ return !!get_interface<PPB_NetAddress_Private_1_1>()->AreHostsEqual(&addr1,
+ &addr2);
+ }
if (has_interface<PPB_NetAddress_Private_1_0>()) {
return !!get_interface<PPB_NetAddress_Private_1_0>()->AreHostsEqual(&addr1,
&addr2);
@@ -65,7 +78,12 @@ std::string NetAddressPrivate::Describe(const PP_NetAddress_Private& addr,
return std::string();
PP_Var result_pp_var = PP_MakeUndefined();
- if (has_interface<PPB_NetAddress_Private_1_0>()) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ result_pp_var = get_interface<PPB_NetAddress_Private_1_1>()->Describe(
+ module->pp_module(),
+ &addr,
+ PP_FromBool(include_port));
+ } else if (has_interface<PPB_NetAddress_Private_1_0>()) {
result_pp_var = get_interface<PPB_NetAddress_Private_1_0>()->Describe(
module->pp_module(),
&addr,
@@ -85,6 +103,11 @@ std::string NetAddressPrivate::Describe(const PP_NetAddress_Private& addr,
bool NetAddressPrivate::ReplacePort(const PP_NetAddress_Private& addr_in,
uint16_t port,
PP_NetAddress_Private* addr_out) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ return !!get_interface<PPB_NetAddress_Private_1_1>()->ReplacePort(&addr_in,
+ port,
+ addr_out);
+ }
if (has_interface<PPB_NetAddress_Private_1_0>()) {
return !!get_interface<PPB_NetAddress_Private_1_0>()->ReplacePort(&addr_in,
port,
@@ -99,22 +122,32 @@ bool NetAddressPrivate::ReplacePort(const PP_NetAddress_Private& addr_in,
}
// static
-void NetAddressPrivate::GetAnyAddress(bool is_ipv6,
+bool NetAddressPrivate::GetAnyAddress(bool is_ipv6,
PP_NetAddress_Private* addr) {
- if (has_interface<PPB_NetAddress_Private_1_0>()) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ get_interface<PPB_NetAddress_Private_1_1>()->GetAnyAddress(
+ PP_FromBool(is_ipv6),
+ addr);
+ return true;
+ } else if (has_interface<PPB_NetAddress_Private_1_0>()) {
get_interface<PPB_NetAddress_Private_1_0>()->GetAnyAddress(
PP_FromBool(is_ipv6),
addr);
+ return true;
} else if (has_interface<PPB_NetAddress_Private_0_1>()) {
get_interface<PPB_NetAddress_Private_0_1>()->GetAnyAddress(
PP_FromBool(is_ipv6),
addr);
+ return true;
}
+ return false;
}
// static
PP_NetAddressFamily_Private NetAddressPrivate::GetFamily(
const PP_NetAddress_Private& addr) {
+ if (has_interface<PPB_NetAddress_Private_1_1>())
+ return get_interface<PPB_NetAddress_Private_1_1>()->GetFamily(&addr);
if (has_interface<PPB_NetAddress_Private_1_0>())
return get_interface<PPB_NetAddress_Private_1_0>()->GetFamily(&addr);
return PP_NETADDRESSFAMILY_UNSPECIFIED;
@@ -122,6 +155,8 @@ PP_NetAddressFamily_Private NetAddressPrivate::GetFamily(
// static
uint16_t NetAddressPrivate::GetPort(const PP_NetAddress_Private& addr) {
+ if (has_interface<PPB_NetAddress_Private_1_1>())
+ return get_interface<PPB_NetAddress_Private_1_1>()->GetPort(&addr);
if (has_interface<PPB_NetAddress_Private_1_0>())
return get_interface<PPB_NetAddress_Private_1_0>()->GetPort(&addr);
return 0;
@@ -131,6 +166,12 @@ uint16_t NetAddressPrivate::GetPort(const PP_NetAddress_Private& addr) {
bool NetAddressPrivate::GetAddress(const PP_NetAddress_Private& addr,
void* address,
uint16_t address_size) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ return PP_ToBool(get_interface<PPB_NetAddress_Private_1_1>()->GetAddress(
+ &addr,
+ address,
+ address_size));
+ }
if (has_interface<PPB_NetAddress_Private_1_0>()) {
return PP_ToBool(get_interface<PPB_NetAddress_Private_1_0>()->GetAddress(
&addr,
@@ -140,4 +181,38 @@ bool NetAddressPrivate::GetAddress(const PP_NetAddress_Private& addr,
return false;
}
+// static
+uint32_t NetAddressPrivate::GetScopeID(const PP_NetAddress_Private& addr) {
+ if (has_interface<PPB_NetAddress_Private_1_1>())
+ return get_interface<PPB_NetAddress_Private_1_1>()->GetScopeID(&addr);
+ return 0;
+}
+
+// static
+bool NetAddressPrivate::CreateFromIPv4Address(
+ const uint8_t ip[4],
+ uint16_t port,
+ struct PP_NetAddress_Private* addr_out) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ get_interface<PPB_NetAddress_Private_1_1>()->CreateFromIPv4Address(
+ ip, port, addr_out);
+ return true;
+ }
+ return false;
+}
+
+// static
+bool NetAddressPrivate::CreateFromIPv6Address(
+ const uint8_t ip[16],
+ uint32_t scope_id,
+ uint16_t port,
+ struct PP_NetAddress_Private* addr_out) {
+ if (has_interface<PPB_NetAddress_Private_1_1>()) {
+ get_interface<PPB_NetAddress_Private_1_1>()->CreateFromIPv6Address(
+ ip, scope_id, port, addr_out);
+ return true;
+ }
+ return false;
+}
+
} // namespace pp