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

Side by Side Diff: src/native_client/src/trusted/plugin/srpc/socket_address.cc

Issue 2961004: Plugin: Remove __socketAddressFactory() and toString() on SocketAddresses (Closed)
Patch Set: Apply HTML changes to copies in "prebuilt" too Created 10 years, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2008 The Native Client Authors. All rights reserved. 2 * Copyright 2008 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can 3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file. 4 * be found in the LICENSE file.
5 */ 5 */
6 6
7 7
8 #include <signal.h> 8 #include <signal.h>
9 #include <string.h> 9 #include <string.h>
10 #include "native_client/src/trusted/plugin/srpc/browser_interface.h" 10 #include "native_client/src/trusted/plugin/srpc/browser_interface.h"
(...skipping 12 matching lines...) Expand all
23 reinterpret_cast<plugin::SocketAddress*>(obj); 23 reinterpret_cast<plugin::SocketAddress*>(obj);
24 plugin::ScriptableHandle* connected_socket = socket_addr->Connect(); 24 plugin::ScriptableHandle* connected_socket = socket_addr->Connect();
25 if (NULL == connected_socket) { 25 if (NULL == connected_socket) {
26 return false; 26 return false;
27 } 27 }
28 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT; 28 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT;
29 params->outs()[0]->u.oval = connected_socket; 29 params->outs()[0]->u.oval = connected_socket;
30 return true; 30 return true;
31 } 31 }
32 32
33 bool RpcToString(void* obj, plugin::SrpcParams *params) {
34 plugin::SocketAddress* socket_addr =
35 reinterpret_cast<plugin::SocketAddress*>(obj);
36 const char* str = socket_addr->wrapper()->conn_cap_path();
37 if (NULL == str) {
38 return false;
39 }
40 size_t len = strnlen(str, NACL_PATH_MAX);
41 // strnlen ensures that len <= NACL_PATH_MAX < SIZE_T_MAX, so no overflow.
42 char* ret_string = reinterpret_cast<char*>(malloc(len + 1));
43 if (NULL == ret_string) {
44 return false;
45 }
46 strncpy(ret_string, str, len + 1);
47 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_STRING;
48 params->outs()[0]->u.sval = ret_string;
49 return true;
50 }
51
52 } // namespace 33 } // namespace
53 34
54 namespace plugin { 35 namespace plugin {
55 36
56 SocketAddress* SocketAddress::New(Plugin* plugin, nacl::DescWrapper* wrapper) { 37 SocketAddress* SocketAddress::New(Plugin* plugin, nacl::DescWrapper* wrapper) {
57 PLUGIN_PRINTF(("SocketAddress::New()\n")); 38 PLUGIN_PRINTF(("SocketAddress::New()\n"));
58 SocketAddress* socket_address = new(std::nothrow) SocketAddress(); 39 SocketAddress* socket_address = new(std::nothrow) SocketAddress();
59 if (socket_address == NULL || !socket_address->Init(plugin, wrapper)) { 40 if (socket_address == NULL || !socket_address->Init(plugin, wrapper)) {
60 delete socket_address; 41 delete socket_address;
61 return NULL; 42 return NULL;
62 } 43 }
63 return socket_address; 44 return socket_address;
64 } 45 }
65 46
66 bool SocketAddress::Init(Plugin* plugin, nacl::DescWrapper* wrapper) { 47 bool SocketAddress::Init(Plugin* plugin, nacl::DescWrapper* wrapper) {
67 if (!DescBasedHandle::Init(plugin, wrapper)) { 48 if (!DescBasedHandle::Init(plugin, wrapper)) {
68 return false; 49 return false;
69 } 50 }
70 LoadMethods(); 51 LoadMethods();
71 return true; 52 return true;
72 } 53 }
73 54
74 void SocketAddress::LoadMethods() { 55 void SocketAddress::LoadMethods() {
75 // Methods implemented by SocketAddresses. 56 // Methods implemented by SocketAddresses.
76 AddMethodCall(RpcConnect, "connect", "", "h"); 57 AddMethodCall(RpcConnect, "connect", "", "h");
77 AddMethodCall(RpcToString, "toString", "", "s");
78 } 58 }
79 59
80 SocketAddress::SocketAddress() { 60 SocketAddress::SocketAddress() {
81 PLUGIN_PRINTF(("SocketAddress::SocketAddress(%p)\n", 61 PLUGIN_PRINTF(("SocketAddress::SocketAddress(%p)\n",
82 static_cast<void*>(this))); 62 static_cast<void*>(this)));
83 } 63 }
84 64
85 SocketAddress::~SocketAddress() { 65 SocketAddress::~SocketAddress() {
86 PLUGIN_PRINTF(("SocketAddress::~SocketAddress(%p)\n", 66 PLUGIN_PRINTF(("SocketAddress::~SocketAddress(%p)\n",
87 static_cast<void*>(this))); 67 static_cast<void*>(this)));
(...skipping 14 matching lines...) Expand all
102 ScriptableHandle* connected_socket = 82 ScriptableHandle* connected_socket =
103 plugin()->browser_interface()->NewScriptableHandle( 83 plugin()->browser_interface()->NewScriptableHandle(
104 portable_connected_socket); 84 portable_connected_socket);
105 PLUGIN_PRINTF(("SocketAddress::Connect: CS returned %p\n", 85 PLUGIN_PRINTF(("SocketAddress::Connect: CS returned %p\n",
106 static_cast<void*>(connected_socket))); 86 static_cast<void*>(connected_socket)));
107 return connected_socket; 87 return connected_socket;
108 } 88 }
109 } 89 }
110 90
111 } // namespace plugin 91 } // namespace plugin
OLDNEW
« no previous file with comments | « src/native_client/src/trusted/plugin/srpc/plugin.cc ('k') | src/native_client/tests/prebuilt/x64/srpc_basic.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698