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

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

Issue 9704080: HostResolver is exposed to Native Client. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sync. Created 8 years, 9 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_host_resolver_private_rpc_server.cc
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1b37b9825e98f1a0060b741500341a0caface879
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc
@@ -0,0 +1,173 @@
+// 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_HostResolver_Private functions.
+
+#include <limits>
+#include <sys/types.h>
+
+#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_errors.h"
+#include "ppapi/cpp/var.h"
+#include "srpcgen/ppb_rpc.h"
+
+using ppapi_proxy::DebugPrintf;
+using ppapi_proxy::DeleteRemoteCallbackInfo;
+using ppapi_proxy::MakeRemoteCompletionCallback;
+using ppapi_proxy::PPBHostResolverPrivateInterface;
+using ppapi_proxy::SerializeTo;
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Create(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Instance instance,
+ // output
+ PP_Resource* resource) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ *resource = PPBHostResolverPrivateInterface()->Create(instance);
+
+ DebugPrintf("PPB_HostResolver_Private::Create: " \
+ "resource=%"NACL_PRId32"\n", *resource);
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_IsHostResolver(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource resource,
+ // output
+ int32_t* is_host_resolver) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ PP_Bool pp_success =
+ PPBHostResolverPrivateInterface()->IsHostResolver(resource);
+ *is_host_resolver = PP_ToBool(pp_success);
+
+ DebugPrintf("PPB_HostResolver_Private::IsHostResolver: " \
+ "is_host_resolver=%d\n", *is_host_resolver);
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Resolve(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // inputs
+ PP_Resource host_resolver,
+ const char* host,
+ int32_t port,
+ nacl_abi_size_t hint_bytes, char* hint,
+ int32_t callback_id,
+ // output
+ int32_t* pp_error) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (hint_bytes !=
+ static_cast<nacl_abi_size_t>(sizeof(PP_HostResolver_Private_Hint))) {
+ return;
+ }
+
+ if (port < std::numeric_limits<uint16_t>::min() ||
+ port > std::numeric_limits<uint16_t>::max()) {
+ return;
+ }
+
+ PP_CompletionCallback remote_callback =
+ MakeRemoteCompletionCallback(rpc->channel, callback_id);
+ if (NULL == remote_callback.func)
+ return;
+
+ *pp_error = PPBHostResolverPrivateInterface()->Resolve(
+ host_resolver,
+ host,
+ static_cast<uint16_t>(port),
+ reinterpret_cast<const PP_HostResolver_Private_Hint*>(hint),
+ remote_callback);
+
+ DebugPrintf("PPB_HostResolver_Private::Resolve: " \
+ "pp_error=%"NACL_PRId32"\n", *pp_error);
+
+ if (*pp_error != PP_OK_COMPLETIONPENDING)
+ DeleteRemoteCallbackInfo(remote_callback);
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetCanonicalName(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ // outputs
+ nacl_abi_size_t* canonical_name_bytes, char* canonical_name) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ pp::Var pp_canonical_name(
+ pp::PASS_REF,
+ PPBHostResolverPrivateInterface()->GetCanonicalName(host_resolver));
+
+ if (!SerializeTo(&pp_canonical_name.pp_var(),
+ canonical_name,
+ canonical_name_bytes)) {
+ return;
+ }
+
+ DebugPrintf("PPB_HostResolver_Private::GetCanonicalName: " \
+ "canonical_name=%s\n", pp_canonical_name.AsString().c_str());
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetSize(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ // output
+ int32_t* size) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ uint32_t list_size =
+ PPBHostResolverPrivateInterface()->GetSize(
+ host_resolver);
+
+ DebugPrintf("PPB_HostResolver_Private::GetSize: " \
+ "size=%"NACL_PRIu32"\n", list_size);
+
+ if (list_size > static_cast<uint32_t>(std::numeric_limits<int32_t>::max()))
+ return;
+ *size = static_cast<int32_t>(list_size);
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetNetAddress(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ int32_t index,
+ // outputs
+ nacl_abi_size_t* addr_bytes, char* addr,
+ int32_t* success) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ PP_Bool pp_success =
+ PPBHostResolverPrivateInterface()->GetNetAddress(
+ host_resolver,
+ index,
+ reinterpret_cast<PP_NetAddress_Private*>(addr));
+ *success = PP_FromBool(pp_success);
+
+ DebugPrintf("PPB_HostResolver_Private::GetNetAddress: " \
+ "success=%d\n", *success);
+}
« 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