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

Side by Side Diff: ppapi/proxy/tcp_server_socket_private_resource.cc

Issue 22923014: TCPSockets are switched to the new Pepper proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync. Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/proxy/tcp_server_socket_private_resource.h" 5 #include "ppapi/proxy/tcp_server_socket_private_resource.h"
6 6
7 #include "ppapi/proxy/plugin_dispatcher.h" 7 #include "ppapi/proxy/plugin_dispatcher.h"
8 #include "ppapi/proxy/plugin_globals.h"
8 #include "ppapi/proxy/ppapi_messages.h" 9 #include "ppapi/proxy/ppapi_messages.h"
9 #include "ppapi/proxy/ppb_tcp_socket_private_proxy.h" 10 #include "ppapi/proxy/tcp_socket_private_resource.h"
10 11
11 namespace ppapi { 12 namespace ppapi {
12 namespace proxy { 13 namespace proxy {
13 14
14 TCPServerSocketPrivateResource::TCPServerSocketPrivateResource( 15 TCPServerSocketPrivateResource::TCPServerSocketPrivateResource(
15 Connection connection, 16 Connection connection,
16 PP_Instance instance) 17 PP_Instance instance)
17 : PluginResource(connection, instance), 18 : PluginResource(connection, instance),
18 state_(STATE_BEFORE_LISTENING), 19 state_(STATE_BEFORE_LISTENING),
19 local_addr_(), 20 local_addr_() {
20 plugin_dispatcher_id_(0) {
21 SendCreate(BROWSER, PpapiHostMsg_TCPServerSocket_CreatePrivate()); 21 SendCreate(BROWSER, PpapiHostMsg_TCPServerSocket_CreatePrivate());
22
23 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
24 if (dispatcher)
25 plugin_dispatcher_id_ = dispatcher->plugin_dispatcher_id();
26 else
27 NOTREACHED();
28 } 22 }
29 23
30 TCPServerSocketPrivateResource::~TCPServerSocketPrivateResource() { 24 TCPServerSocketPrivateResource::~TCPServerSocketPrivateResource() {
31 } 25 }
32 26
33 thunk::PPB_TCPServerSocket_Private_API* 27 thunk::PPB_TCPServerSocket_Private_API*
34 TCPServerSocketPrivateResource::AsPPB_TCPServerSocket_Private_API() { 28 TCPServerSocketPrivateResource::AsPPB_TCPServerSocket_Private_API() {
35 return this; 29 return this;
36 } 30 }
37 31
(...skipping 26 matching lines...) Expand all
64 return PP_ERROR_BADARGUMENT; 58 return PP_ERROR_BADARGUMENT;
65 if (state_ != STATE_LISTENING) 59 if (state_ != STATE_LISTENING)
66 return PP_ERROR_FAILED; 60 return PP_ERROR_FAILED;
67 if (TrackedCallback::IsPending(accept_callback_)) 61 if (TrackedCallback::IsPending(accept_callback_))
68 return PP_ERROR_INPROGRESS; 62 return PP_ERROR_INPROGRESS;
69 63
70 accept_callback_ = callback; 64 accept_callback_ = callback;
71 65
72 Call<PpapiPluginMsg_TCPServerSocket_AcceptReply>( 66 Call<PpapiPluginMsg_TCPServerSocket_AcceptReply>(
73 BROWSER, 67 BROWSER,
74 PpapiHostMsg_TCPServerSocket_Accept(plugin_dispatcher_id_), 68 PpapiHostMsg_TCPServerSocket_Accept(),
75 base::Bind(&TCPServerSocketPrivateResource::OnPluginMsgAcceptReply, 69 base::Bind(&TCPServerSocketPrivateResource::OnPluginMsgAcceptReply,
76 base::Unretained(this), tcp_socket)); 70 base::Unretained(this), tcp_socket));
77 return PP_OK_COMPLETIONPENDING; 71 return PP_OK_COMPLETIONPENDING;
78 } 72 }
79 73
80 int32_t TCPServerSocketPrivateResource::GetLocalAddress( 74 int32_t TCPServerSocketPrivateResource::GetLocalAddress(
81 PP_NetAddress_Private* addr) { 75 PP_NetAddress_Private* addr) {
82 if (!addr) 76 if (!addr)
83 return PP_ERROR_BADARGUMENT; 77 return PP_ERROR_BADARGUMENT;
84 if (state_ != STATE_LISTENING) 78 if (state_ != STATE_LISTENING)
(...skipping 23 matching lines...) Expand all
108 if (params.result() == PP_OK) { 102 if (params.result() == PP_OK) {
109 local_addr_ = local_addr; 103 local_addr_ = local_addr;
110 state_ = STATE_LISTENING; 104 state_ = STATE_LISTENING;
111 } 105 }
112 listen_callback_->Run(params.result()); 106 listen_callback_->Run(params.result());
113 } 107 }
114 108
115 void TCPServerSocketPrivateResource::OnPluginMsgAcceptReply( 109 void TCPServerSocketPrivateResource::OnPluginMsgAcceptReply(
116 PP_Resource* tcp_socket, 110 PP_Resource* tcp_socket,
117 const ResourceMessageReplyParams& params, 111 const ResourceMessageReplyParams& params,
118 uint32 accepted_socket_id, 112 int pending_resource_id,
119 const PP_NetAddress_Private& local_addr, 113 const PP_NetAddress_Private& local_addr,
120 const PP_NetAddress_Private& remote_addr) { 114 const PP_NetAddress_Private& remote_addr) {
121 DCHECK(tcp_socket); 115 DCHECK(tcp_socket);
122 if (state_ != STATE_LISTENING || 116 if (state_ != STATE_LISTENING ||
123 !TrackedCallback::IsPending(accept_callback_)) { 117 !TrackedCallback::IsPending(accept_callback_)) {
124 return; 118 return;
125 } 119 }
126 if (params.result() == PP_OK) { 120 if (params.result() == PP_OK) {
127 *tcp_socket = 121 Connection connection(PluginGlobals::Get()->GetBrowserSender(),
yzshen1 2013/08/16 20:40:42 TCPServerSocketPrivateResource itself has a connec
ygorshenin1 2013/08/19 14:33:35 Done.
128 PPB_TCPSocket_Private_Proxy::CreateProxyResourceForConnectedSocket( 122 PluginDispatcher::GetForInstance(pp_instance()));
129 pp_instance(), 123 *tcp_socket = (new TCPSocketPrivateResource(connection, pp_instance(),
130 accepted_socket_id, 124 pending_resource_id,
131 local_addr, 125 local_addr,
132 remote_addr); 126 remote_addr))->GetReference();
133 } 127 }
134 accept_callback_->Run(params.result()); 128 accept_callback_->Run(params.result());
135 } 129 }
136 130
137 } // namespace proxy 131 } // namespace proxy
138 } // namespace ppapi 132 } // namespace ppapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698