Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Unified Diff: ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_tcp_server_socket_private_rpc_server.cc

Issue 9365016: Exposed Listen and Accept methods to Native Client. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sync, deleted comments from SRPC file. Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_tcp_server_socket_private_rpc_server.cc
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_tcp_server_socket_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_tcp_server_socket_private_rpc_server.cc
new file mode 100644
index 0000000000000000000000000000000000000000..45793ea17ffa0539f9a325899ffe5ce67aefe319
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_tcp_server_socket_private_rpc_server.cc
@@ -0,0 +1,152 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// SRPC-abstraction wrappers around PPB_TCPServerSocket_Private functions.
+
+#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/utility.h"
+#include "ppapi/c/pp_completion_callback.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/c/private/ppb_tcp_server_socket_private.h"
+#include "srpcgen/ppb_rpc.h"
+
+using ppapi_proxy::DebugPrintf;
+using ppapi_proxy::DeleteRemoteCallbackInfo;
+using ppapi_proxy::MakeRemoteCompletionCallback;
+using ppapi_proxy::PPBTCPServerSocketPrivateInterface;
+
+namespace {
+
+bool SuccessResourceRead(int32_t num_bytes) {
+ return num_bytes >= 0;
+}
+
+nacl_abi_size_t ResourceReadSize(int32_t result) {
+ return static_cast<nacl_abi_size_t>(sizeof(PP_Resource));
jvoung - send to chromium... 2012/02/27 18:42:19 Does the ppapi_proxy code use UNREFERENCED_PARAMET
+}
+
+} // namespace
+
+void PpbTCPServerSocketPrivateRpcServer::PPB_TCPServerSocket_Private_Create(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // inputs
+ PP_Instance instance,
+ // outputs
+ PP_Resource* resource) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ *resource = PPBTCPServerSocketPrivateInterface()->Create(instance);
+
+ DebugPrintf("PPB_TCPServerSocket_Private::Create: " \
+ "resource=%"NACL_PRId32"\n", *resource);
+}
+
+void PpbTCPServerSocketPrivateRpcServer::
+PPB_TCPServerSocket_Private_IsTCPServerSocket(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource resource,
+ // output
+ int32_t* is_tcp_server_socket) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ PP_Bool pp_success =
+ PPBTCPServerSocketPrivateInterface()->IsTCPServerSocket(resource);
+ *is_tcp_server_socket = PP_ToBool(pp_success);
+
+ DebugPrintf("PPB_TCPServerSocket_Private::IsTCPServerSocket: " \
+ "is_tcp_server_socket=%d\n", *is_tcp_server_socket);
+}
+
+void PpbTCPServerSocketPrivateRpcServer::PPB_TCPServerSocket_Private_Listen(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // inputs
+ PP_Resource tcp_server_socket,
+ nacl_abi_size_t addr_bytes, char* addr,
+ int32_t backlog,
+ int32_t callback_id,
+ // output
+ int32_t* pp_error) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (addr_bytes != static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private)))
+ return;
+
+ PP_CompletionCallback remote_callback =
+ MakeRemoteCompletionCallback(rpc->channel, callback_id);
+ if (NULL == remote_callback.func)
+ return;
+
+ *pp_error = PPBTCPServerSocketPrivateInterface()->Listen(
+ tcp_server_socket,
+ reinterpret_cast<PP_NetAddress_Private*>(addr),
+ backlog,
+ remote_callback);
+
+ DebugPrintf("PPB_TCPServerSocket_Private::Listen: " \
+ "pp_error=%"NACL_PRId32"\n", *pp_error);
+
+ if (*pp_error != PP_OK_COMPLETIONPENDING)
+ DeleteRemoteCallbackInfo(remote_callback);
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbTCPServerSocketPrivateRpcServer::PPB_TCPServerSocket_Private_Accept(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // inputs
+ PP_Resource tcp_server_socket,
+ int32_t callback_id,
+ // outputs
+ PP_Resource* tcp_socket,
+ int32_t* pp_error) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ char* callback_buffer = NULL;
+ PP_CompletionCallback remote_callback =
+ MakeRemoteCompletionCallback(rpc->channel,
+ callback_id,
+ sizeof(PP_Resource),
+ &callback_buffer,
+ SuccessResourceRead,
+ ResourceReadSize);
+ *pp_error = PPBTCPServerSocketPrivateInterface()->Accept(
+ tcp_server_socket,
+ reinterpret_cast<PP_Resource*>(callback_buffer),
+ remote_callback);
+
+ DebugPrintf("PPB_TCPServerSocket_Private::Accept: "
+ "pp_error=%"NACL_PRId32"\n", *pp_error);
+
+ if (*pp_error != PP_OK_COMPLETIONPENDING)
+ DeleteRemoteCallbackInfo(remote_callback);
+ else
+ *tcp_socket = 0;
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbTCPServerSocketPrivateRpcServer::
+PPB_TCPServerSocket_Private_StopListening(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource tcp_server_socket) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ DebugPrintf("PPB_TCPServerSocket_Private::StopListening: " \
+ "tcp_socket=%"NACL_PRId32"\n", tcp_server_socket);
+
+ PPBTCPServerSocketPrivateInterface()->StopListening(tcp_server_socket);
+}
« no previous file with comments | « ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc ('k') | ppapi/native_client/src/shared/ppapi_proxy/build.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698