diff options
Diffstat (limited to 'ppapi/shared_impl/private')
-rw-r--r-- | ppapi/shared_impl/private/udp_socket_private_impl.cc | 20 | ||||
-rw-r--r-- | ppapi/shared_impl/private/udp_socket_private_impl.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc index 9b509e1..d3e94c1 100644 --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc +++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc @@ -12,6 +12,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/message_loop.h" +#include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_completion_callback.h" #include "ppapi/c/pp_errors.h" @@ -40,6 +41,25 @@ UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() { return this; } +int32_t UDPSocketPrivateImpl::SetSocketFeature(PP_UDPSocketFeature_Private name, + PP_Var value) { + if (bound_ || closed_) + return PP_ERROR_FAILED; + + switch (name) { + case PP_UDPSOCKETFEATURE_ADDRESS_REUSE: + case PP_UDPSOCKETFEATURE_BROADCAST: + if (value.type != PP_VARTYPE_BOOL) + return PP_ERROR_BADARGUMENT; + SendBoolSocketFeature(static_cast<int32_t>(name), + PP_ToBool(value.value.as_bool)); + break; + default: + return PP_ERROR_BADARGUMENT; + } + return PP_OK; +} + int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr, scoped_refptr<TrackedCallback> callback) { if (!addr) diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.h b/ppapi/shared_impl/private/udp_socket_private_impl.h index 36d51ca..e8e3cb2 100644 --- a/ppapi/shared_impl/private/udp_socket_private_impl.h +++ b/ppapi/shared_impl/private/udp_socket_private_impl.h @@ -40,6 +40,8 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl virtual PPB_UDPSocket_Private_API* AsPPB_UDPSocket_Private_API() OVERRIDE; // PPB_UDPSocket_Private_API implementation. + virtual int32_t SetSocketFeature(PP_UDPSocketFeature_Private name, + PP_Var value) OVERRIDE; virtual int32_t Bind(const PP_NetAddress_Private* addr, scoped_refptr<TrackedCallback> callback) OVERRIDE; virtual PP_Bool GetBoundAddress(PP_NetAddress_Private* addr) OVERRIDE; @@ -63,6 +65,7 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl // Send functions that need to be implemented differently for // the proxied and non-proxied derived classes. + virtual void SendBoolSocketFeature(int32_t name, bool value) = 0; virtual void SendBind(const PP_NetAddress_Private& addr) = 0; virtual void SendRecvFrom(int32_t num_bytes) = 0; virtual void SendSendTo(const std::string& buffer, |