Index: ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_udp_socket_private_rpc_server.cc |
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_udp_socket_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_udp_socket_private_rpc_server.cc |
index 11bd80c7f251f6f55d85ff6f8920934584f8444c..2137e5d18080e774169173e7704b3821c6596271 100644 |
--- a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_udp_socket_private_rpc_server.cc |
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_udp_socket_private_rpc_server.cc |
@@ -10,6 +10,7 @@ |
#include "native_client/src/include/nacl_macros.h" |
#include "native_client/src/shared/ppapi_proxy/browser_callback.h" |
#include "native_client/src/shared/ppapi_proxy/browser_globals.h" |
+#include "native_client/src/shared/ppapi_proxy/object_serialize.h" |
#include "native_client/src/shared/ppapi_proxy/utility.h" |
#include "ppapi/c/pp_completion_callback.h" |
#include "ppapi/c/pp_errors.h" |
@@ -18,6 +19,7 @@ |
using ppapi_proxy::DebugPrintf; |
using ppapi_proxy::DeleteRemoteCallbackInfo; |
+using ppapi_proxy::DeserializeTo; |
using ppapi_proxy::MakeRemoteCompletionCallback; |
using ppapi_proxy::PPBUDPSocketPrivateInterface; |
@@ -54,6 +56,39 @@ void PpbUDPSocketPrivateRpcServer::PPB_UDPSocket_Private_IsUDPSocket( |
"is_udp_socket=%d\n", *is_udp_socket); |
} |
+void PpbUDPSocketPrivateRpcServer::PPB_UDPSocket_Private_SetSocketFeature( |
+ NaClSrpcRpc* rpc, |
+ NaClSrpcClosure* done, |
+ // inputs |
+ PP_Resource udp_socket, |
+ int32_t name, |
+ nacl_abi_size_t value_bytes, char* value, |
+ // output |
+ int32_t* pp_error) { |
+ NaClSrpcClosureRunner runner(done); |
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
+ |
+ if (name < 0 || name >= PP_UDPSOCKETFEATURE_COUNT) { |
+ *pp_error = PP_ERROR_BADARGUMENT; |
+ rpc->result = NACL_SRPC_RESULT_OK; |
+ return; |
+ } |
+ |
+ PP_Var pp_value = PP_MakeUndefined(); |
+ if (!DeserializeTo(value, value_bytes, 1, &pp_value)) |
+ return; |
+ |
+ *pp_error = PPBUDPSocketPrivateInterface()->SetSocketFeature( |
+ udp_socket, |
+ static_cast<PP_UDPSocketFeature_Private>(name), |
+ pp_value); |
+ |
+ DebugPrintf("PPB_UDPSocket_Private::SetSocketFeature: " |
+ "pp_error=%"NACL_PRId32"\n", *pp_error); |
+ |
+ rpc->result = NACL_SRPC_RESULT_OK; |
+} |
+ |
void PpbUDPSocketPrivateRpcServer::PPB_UDPSocket_Private_Bind( |
NaClSrpcRpc* rpc, |
NaClSrpcClosure* done, |