| Index: ppapi/cpp/udp_socket.cc
|
| diff --git a/ppapi/cpp/udp_socket.cc b/ppapi/cpp/udp_socket.cc
|
| index 2f8c505df5899db8a43d4d055cc1c8f791a6fa7d..19d2894775cec42fbbc1cb54e53d5358ddfd00e0 100644
|
| --- a/ppapi/cpp/udp_socket.cc
|
| +++ b/ppapi/cpp/udp_socket.cc
|
| @@ -22,13 +22,20 @@ template <> const char* interface_name<PPB_UDPSocket_1_1>() {
|
| return PPB_UDPSOCKET_INTERFACE_1_1;
|
| }
|
|
|
| +template <> const char* interface_name<PPB_UDPSocket_1_2>() {
|
| + return PPB_UDPSOCKET_INTERFACE_1_2;
|
| +}
|
| +
|
| } // namespace
|
|
|
| UDPSocket::UDPSocket() {
|
| }
|
|
|
| UDPSocket::UDPSocket(const InstanceHandle& instance) {
|
| - if (has_interface<PPB_UDPSocket_1_1>()) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + PassRefFromConstructor(get_interface<PPB_UDPSocket_1_2>()->Create(
|
| + instance.pp_instance()));
|
| + } else if (has_interface<PPB_UDPSocket_1_1>()) {
|
| PassRefFromConstructor(get_interface<PPB_UDPSocket_1_1>()->Create(
|
| instance.pp_instance()));
|
| } else if (has_interface<PPB_UDPSocket_1_0>()) {
|
| @@ -54,12 +61,17 @@ UDPSocket& UDPSocket::operator=(const UDPSocket& other) {
|
|
|
| // static
|
| bool UDPSocket::IsAvailable() {
|
| - return has_interface<PPB_UDPSocket_1_1>() ||
|
| + return has_interface<PPB_UDPSocket_1_2>() ||
|
| + has_interface<PPB_UDPSocket_1_1>() ||
|
| has_interface<PPB_UDPSocket_1_0>();
|
| }
|
|
|
| int32_t UDPSocket::Bind(const NetAddress& addr,
|
| const CompletionCallback& callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->Bind(
|
| + pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
|
| + }
|
| if (has_interface<PPB_UDPSocket_1_1>()) {
|
| return get_interface<PPB_UDPSocket_1_1>()->Bind(
|
| pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
|
| @@ -72,6 +84,11 @@ int32_t UDPSocket::Bind(const NetAddress& addr,
|
| }
|
|
|
| NetAddress UDPSocket::GetBoundAddress() {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return NetAddress(
|
| + PASS_REF,
|
| + get_interface<PPB_UDPSocket_1_2>()->GetBoundAddress(pp_resource()));
|
| + }
|
| if (has_interface<PPB_UDPSocket_1_1>()) {
|
| return NetAddress(
|
| PASS_REF,
|
| @@ -89,6 +106,11 @@ int32_t UDPSocket::RecvFrom(
|
| char* buffer,
|
| int32_t num_bytes,
|
| const CompletionCallbackWithOutput<NetAddress>& callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->RecvFrom(
|
| + pp_resource(), buffer, num_bytes, callback.output(),
|
| + callback.pp_completion_callback());
|
| + }
|
| if (has_interface<PPB_UDPSocket_1_1>()) {
|
| return get_interface<PPB_UDPSocket_1_1>()->RecvFrom(
|
| pp_resource(), buffer, num_bytes, callback.output(),
|
| @@ -106,6 +128,11 @@ int32_t UDPSocket::SendTo(const char* buffer,
|
| int32_t num_bytes,
|
| const NetAddress& addr,
|
| const CompletionCallback& callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->SendTo(
|
| + pp_resource(), buffer, num_bytes, addr.pp_resource(),
|
| + callback.pp_completion_callback());
|
| + }
|
| if (has_interface<PPB_UDPSocket_1_1>()) {
|
| return get_interface<PPB_UDPSocket_1_1>()->SendTo(
|
| pp_resource(), buffer, num_bytes, addr.pp_resource(),
|
| @@ -120,6 +147,8 @@ int32_t UDPSocket::SendTo(const char* buffer,
|
| }
|
|
|
| void UDPSocket::Close() {
|
| + if (has_interface<PPB_UDPSocket_1_2>())
|
| + return get_interface<PPB_UDPSocket_1_2>()->Close(pp_resource());
|
| if (has_interface<PPB_UDPSocket_1_1>())
|
| return get_interface<PPB_UDPSocket_1_1>()->Close(pp_resource());
|
| if (has_interface<PPB_UDPSocket_1_0>())
|
| @@ -129,6 +158,10 @@ void UDPSocket::Close() {
|
| int32_t UDPSocket::SetOption(PP_UDPSocket_Option name,
|
| const Var& value,
|
| const CompletionCallback& callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->SetOption(
|
| + pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
|
| + }
|
| if (has_interface<PPB_UDPSocket_1_1>()) {
|
| return get_interface<PPB_UDPSocket_1_1>()->SetOption(
|
| pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
|
| @@ -140,4 +173,22 @@ int32_t UDPSocket::SetOption(PP_UDPSocket_Option name,
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| }
|
|
|
| +int32_t UDPSocket::JoinGroup(const NetAddress& group,
|
| + const CompletionCallback callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->JoinGroup(
|
| + pp_resource(), group.pp_resource(), callback.pp_completion_callback());
|
| + }
|
| + return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| +}
|
| +
|
| +int32_t UDPSocket::LeaveGroup(const NetAddress& group,
|
| + const CompletionCallback callback) {
|
| + if (has_interface<PPB_UDPSocket_1_2>()) {
|
| + return get_interface<PPB_UDPSocket_1_2>()->LeaveGroup(
|
| + pp_resource(), group.pp_resource(), callback.pp_completion_callback());
|
| + }
|
| + return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| +}
|
| +
|
| } // namespace pp
|
|
|