diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-22 22:41:06 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-22 22:41:06 +0000 |
commit | b13deef887384a4d8ff51ff6027128d0ffeeacfc (patch) | |
tree | a62578ff4d767ccc81657c50d97514086ec3c311 /ppapi/cpp/private/net_address_private.cc | |
parent | f497f0c6437d077911e6569789616754528e8a51 (diff) | |
download | chromium_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.cc | 85 |
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 |