Home | History | Annotate | Download | only in cpp
      1 // Copyright 2013 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 "ppapi/cpp/net_address.h"
      6 
      7 #include "ppapi/c/pp_bool.h"
      8 #include "ppapi/cpp/instance_handle.h"
      9 #include "ppapi/cpp/module_impl.h"
     10 
     11 namespace pp {
     12 
     13 namespace {
     14 
     15 template <> const char* interface_name<PPB_NetAddress_1_0>() {
     16   return PPB_NETADDRESS_INTERFACE_1_0;
     17 }
     18 
     19 }  // namespace
     20 
     21 NetAddress::NetAddress() {
     22 }
     23 
     24 NetAddress::NetAddress(PassRef, PP_Resource resource)
     25     : Resource(PASS_REF, resource) {
     26 }
     27 
     28 NetAddress::NetAddress(const InstanceHandle& instance,
     29                        const PP_NetAddress_IPv4& ipv4_addr) {
     30   if (has_interface<PPB_NetAddress_1_0>()) {
     31     PassRefFromConstructor(
     32         get_interface<PPB_NetAddress_1_0>()->CreateFromIPv4Address(
     33             instance.pp_instance(), &ipv4_addr));
     34   }
     35 }
     36 
     37 NetAddress::NetAddress(const InstanceHandle& instance,
     38                        const PP_NetAddress_IPv6& ipv6_addr) {
     39   if (has_interface<PPB_NetAddress_1_0>()) {
     40     PassRefFromConstructor(
     41         get_interface<PPB_NetAddress_1_0>()->CreateFromIPv6Address(
     42             instance.pp_instance(), &ipv6_addr));
     43   }
     44 }
     45 
     46 NetAddress::NetAddress(const NetAddress& other) : Resource(other) {
     47 }
     48 
     49 NetAddress::~NetAddress() {
     50 }
     51 
     52 NetAddress& NetAddress::operator=(const NetAddress& other) {
     53   Resource::operator=(other);
     54   return *this;
     55 }
     56 
     57 // static
     58 bool NetAddress::IsAvailable() {
     59   return has_interface<PPB_NetAddress_1_0>();
     60 }
     61 
     62 PP_NetAddress_Family NetAddress::GetFamily() const {
     63   if (has_interface<PPB_NetAddress_1_0>())
     64     return get_interface<PPB_NetAddress_1_0>()->GetFamily(pp_resource());
     65 
     66   return PP_NETADDRESS_FAMILY_UNSPECIFIED;
     67 }
     68 
     69 Var NetAddress::DescribeAsString(bool include_port) const {
     70   if (has_interface<PPB_NetAddress_1_0>()) {
     71     return Var(PASS_REF,
     72                get_interface<PPB_NetAddress_1_0>()->DescribeAsString(
     73                    pp_resource(), PP_FromBool(include_port)));
     74   }
     75 
     76   return Var();
     77 }
     78 
     79 bool NetAddress::DescribeAsIPv4Address(PP_NetAddress_IPv4* ipv4_addr) const {
     80   if (has_interface<PPB_NetAddress_1_0>()) {
     81     return PP_ToBool(
     82         get_interface<PPB_NetAddress_1_0>()->DescribeAsIPv4Address(
     83             pp_resource(), ipv4_addr));
     84   }
     85 
     86   return false;
     87 }
     88 
     89 bool NetAddress::DescribeAsIPv6Address(PP_NetAddress_IPv6* ipv6_addr) const {
     90   if (has_interface<PPB_NetAddress_1_0>()) {
     91     return PP_ToBool(
     92         get_interface<PPB_NetAddress_1_0>()->DescribeAsIPv6Address(
     93             pp_resource(), ipv6_addr));
     94   }
     95 
     96   return false;
     97 }
     98 
     99 }  // namespace pp
    100