OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ppb_flash_tcp_socket_proxy.h" | 5 #include "ppapi/proxy/ppb_flash_tcp_socket_proxy.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cstring> | 8 #include <cstring> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
82 PP_CompletionCallback callback) OVERRIDE; | 82 PP_CompletionCallback callback) OVERRIDE; |
83 virtual int32_t Write(const char* buffer, | 83 virtual int32_t Write(const char* buffer, |
84 int32_t bytes_to_write, | 84 int32_t bytes_to_write, |
85 PP_CompletionCallback callback) OVERRIDE; | 85 PP_CompletionCallback callback) OVERRIDE; |
86 virtual void Disconnect() OVERRIDE; | 86 virtual void Disconnect() OVERRIDE; |
87 | 87 |
88 // Notifications from the proxy. | 88 // Notifications from the proxy. |
89 void OnConnectCompleted(bool succeeded, | 89 void OnConnectCompleted(bool succeeded, |
90 const PP_Flash_NetAddress& local_addr, | 90 const PP_Flash_NetAddress& local_addr, |
91 const PP_Flash_NetAddress& remote_addr); | 91 const PP_Flash_NetAddress& remote_addr); |
92 void OnInitiateSSLCompleted(bool succeeded); | |
wtc
2011/08/09 21:21:29
I suggest that you change "InitiateSSL" to "SSLCon
yzshen1
2011/08/09 23:45:29
[I am open to making the change, just to make sure
| |
92 void OnReadCompleted(bool succeeded, const std::string& data); | 93 void OnReadCompleted(bool succeeded, const std::string& data); |
93 void OnWriteCompleted(bool succeeded, int32_t bytes_written); | 94 void OnWriteCompleted(bool succeeded, int32_t bytes_written); |
94 | 95 |
95 private: | 96 private: |
96 enum ConnectionState { | 97 enum ConnectionState { |
97 // Before a connection is successfully established (including a connect | 98 // Before a connection is successfully established (including a connect |
98 // request is pending or a previous connect request failed). | 99 // request is pending or a previous connect request failed). |
99 BEFORE_CONNECT, | 100 BEFORE_CONNECT, |
101 // A connection has been successfully established (including a request of | |
102 // initiating SSL is pending). | |
100 CONNECTED, | 103 CONNECTED, |
104 // An SSL connection has been successfully established. | |
105 SSL_CONNECTED, | |
106 // The connection has been ended. | |
101 DISCONNECTED | 107 DISCONNECTED |
102 }; | 108 }; |
103 | 109 |
110 bool IsConnected() const; | |
111 | |
104 // Backend for both Connect() and ConnectWithNetAddress(). To keep things | 112 // Backend for both Connect() and ConnectWithNetAddress(). To keep things |
105 // generic, the message is passed in (on error, it's deleted). | 113 // generic, the message is passed in (on error, it's deleted). |
106 int32_t ConnectWithMessage(IPC::Message* msg, | 114 int32_t ConnectWithMessage(IPC::Message* msg, |
107 PP_CompletionCallback callback); | 115 PP_CompletionCallback callback); |
108 | 116 |
109 void PostAbortAndClearIfNecessary(PP_CompletionCallback* callback); | 117 void PostAbortAndClearIfNecessary(PP_CompletionCallback* callback); |
110 | 118 |
111 uint32 socket_id_; | 119 uint32 socket_id_; |
112 ConnectionState connection_state_; | 120 ConnectionState connection_state_; |
113 | 121 |
114 PP_CompletionCallback connect_callback_; | 122 PP_CompletionCallback connect_callback_; |
123 PP_CompletionCallback initiate_ssl_callback_; | |
115 PP_CompletionCallback read_callback_; | 124 PP_CompletionCallback read_callback_; |
116 PP_CompletionCallback write_callback_; | 125 PP_CompletionCallback write_callback_; |
117 | 126 |
118 char* read_buffer_; | 127 char* read_buffer_; |
119 int32_t bytes_to_read_; | 128 int32_t bytes_to_read_; |
120 | 129 |
121 PP_Flash_NetAddress local_addr_; | 130 PP_Flash_NetAddress local_addr_; |
122 PP_Flash_NetAddress remote_addr_; | 131 PP_Flash_NetAddress remote_addr_; |
123 | 132 |
124 DISALLOW_COPY_AND_ASSIGN(FlashTCPSocket); | 133 DISALLOW_COPY_AND_ASSIGN(FlashTCPSocket); |
125 }; | 134 }; |
126 | 135 |
127 FlashTCPSocket::FlashTCPSocket(const HostResource& resource, uint32 socket_id) | 136 FlashTCPSocket::FlashTCPSocket(const HostResource& resource, uint32 socket_id) |
128 : PluginResource(resource), | 137 : PluginResource(resource), |
129 socket_id_(socket_id), | 138 socket_id_(socket_id), |
130 connection_state_(BEFORE_CONNECT), | 139 connection_state_(BEFORE_CONNECT), |
131 connect_callback_(PP_BlockUntilComplete()), | 140 connect_callback_(PP_BlockUntilComplete()), |
141 initiate_ssl_callback_(PP_BlockUntilComplete()), | |
132 read_callback_(PP_BlockUntilComplete()), | 142 read_callback_(PP_BlockUntilComplete()), |
133 write_callback_(PP_BlockUntilComplete()), | 143 write_callback_(PP_BlockUntilComplete()), |
134 read_buffer_(NULL), | 144 read_buffer_(NULL), |
135 bytes_to_read_(-1) { | 145 bytes_to_read_(-1) { |
136 DCHECK(socket_id != 0); | 146 DCHECK(socket_id != 0); |
137 | 147 |
138 local_addr_.size = 0; | 148 local_addr_.size = 0; |
139 memset(local_addr_.data, 0, sizeof(local_addr_.data)); | 149 memset(local_addr_.data, 0, sizeof(local_addr_.data)); |
140 remote_addr_.size = 0; | 150 remote_addr_.size = 0; |
141 memset(remote_addr_.data, 0, sizeof(remote_addr_.data)); | 151 memset(remote_addr_.data, 0, sizeof(remote_addr_.data)); |
(...skipping 29 matching lines...) Expand all Loading... | |
171 if (!addr) | 181 if (!addr) |
172 return PP_ERROR_BADARGUMENT; | 182 return PP_ERROR_BADARGUMENT; |
173 | 183 |
174 return ConnectWithMessage( | 184 return ConnectWithMessage( |
175 new PpapiHostMsg_PPBFlashTCPSocket_ConnectWithNetAddress( | 185 new PpapiHostMsg_PPBFlashTCPSocket_ConnectWithNetAddress( |
176 socket_id_, *addr), | 186 socket_id_, *addr), |
177 callback); | 187 callback); |
178 } | 188 } |
179 | 189 |
180 PP_Bool FlashTCPSocket::GetLocalAddress(PP_Flash_NetAddress* local_addr) { | 190 PP_Bool FlashTCPSocket::GetLocalAddress(PP_Flash_NetAddress* local_addr) { |
181 if (connection_state_ != CONNECTED || !local_addr) | 191 if (!IsConnected() || !local_addr) |
182 return PP_FALSE; | 192 return PP_FALSE; |
183 | 193 |
184 *local_addr = local_addr_; | 194 *local_addr = local_addr_; |
185 return PP_TRUE; | 195 return PP_TRUE; |
186 } | 196 } |
187 | 197 |
188 PP_Bool FlashTCPSocket::GetRemoteAddress(PP_Flash_NetAddress* remote_addr) { | 198 PP_Bool FlashTCPSocket::GetRemoteAddress(PP_Flash_NetAddress* remote_addr) { |
189 if (connection_state_ != CONNECTED || !remote_addr) | 199 if (!IsConnected() || !remote_addr) |
190 return PP_FALSE; | 200 return PP_FALSE; |
191 | 201 |
192 *remote_addr = remote_addr_; | 202 *remote_addr = remote_addr_; |
193 return PP_TRUE; | 203 return PP_TRUE; |
194 } | 204 } |
195 | 205 |
196 int32_t FlashTCPSocket::InitiateSSL(const char* server_name, | 206 int32_t FlashTCPSocket::InitiateSSL(const char* server_name, |
197 PP_CompletionCallback callback) { | 207 PP_CompletionCallback callback) { |
198 // TODO(yzshen): add it. | 208 if (!server_name || !callback.func) |
199 return PP_ERROR_FAILED; | 209 return PP_ERROR_BADARGUMENT; |
210 | |
211 if (connection_state_ != CONNECTED) | |
212 return PP_ERROR_FAILED; | |
213 if (initiate_ssl_callback_.func || read_callback_.func || | |
214 write_callback_.func) | |
215 return PP_ERROR_INPROGRESS; | |
216 | |
217 initiate_ssl_callback_ = callback; | |
218 | |
219 // Send the request, the browser will call us back via InitiateSSLACK. | |
220 GetDispatcher()->SendToBrowser( | |
221 new PpapiHostMsg_PPBFlashTCPSocket_InitiateSSL(socket_id_, | |
222 std::string(server_name))); | |
223 return PP_OK_COMPLETIONPENDING; | |
200 } | 224 } |
201 | 225 |
202 int32_t FlashTCPSocket::Read(char* buffer, | 226 int32_t FlashTCPSocket::Read(char* buffer, |
203 int32_t bytes_to_read, | 227 int32_t bytes_to_read, |
204 PP_CompletionCallback callback) { | 228 PP_CompletionCallback callback) { |
205 if (!buffer || bytes_to_read <= 0 || !callback.func) | 229 if (!buffer || bytes_to_read <= 0 || !callback.func) |
206 return PP_ERROR_BADARGUMENT; | 230 return PP_ERROR_BADARGUMENT; |
207 | 231 |
208 if (connection_state_ != CONNECTED) | 232 if (!IsConnected()) |
209 return PP_ERROR_FAILED; | 233 return PP_ERROR_FAILED; |
210 if (read_callback_.func) | 234 if (read_callback_.func || initiate_ssl_callback_.func) |
211 return PP_ERROR_INPROGRESS; | 235 return PP_ERROR_INPROGRESS; |
212 | 236 |
213 read_buffer_ = buffer; | 237 read_buffer_ = buffer; |
214 bytes_to_read_ = std::min(bytes_to_read, kFlashTCPSocketMaxReadSize); | 238 bytes_to_read_ = std::min(bytes_to_read, kFlashTCPSocketMaxReadSize); |
215 read_callback_ = callback; | 239 read_callback_ = callback; |
216 | 240 |
217 // Send the request, the browser will call us back via ReadACK. | 241 // Send the request, the browser will call us back via ReadACK. |
218 GetDispatcher()->SendToBrowser( | 242 GetDispatcher()->SendToBrowser( |
219 new PpapiHostMsg_PPBFlashTCPSocket_Read(socket_id_, bytes_to_read_)); | 243 new PpapiHostMsg_PPBFlashTCPSocket_Read(socket_id_, bytes_to_read_)); |
220 return PP_OK_COMPLETIONPENDING; | 244 return PP_OK_COMPLETIONPENDING; |
221 } | 245 } |
222 | 246 |
223 int32_t FlashTCPSocket::Write(const char* buffer, | 247 int32_t FlashTCPSocket::Write(const char* buffer, |
224 int32_t bytes_to_write, | 248 int32_t bytes_to_write, |
225 PP_CompletionCallback callback) { | 249 PP_CompletionCallback callback) { |
226 if (!buffer || bytes_to_write <= 0 || !callback.func) | 250 if (!buffer || bytes_to_write <= 0 || !callback.func) |
227 return PP_ERROR_BADARGUMENT; | 251 return PP_ERROR_BADARGUMENT; |
228 | 252 |
229 if (connection_state_ != CONNECTED) | 253 if (!IsConnected()) |
230 return PP_ERROR_FAILED; | 254 return PP_ERROR_FAILED; |
231 if (write_callback_.func) | 255 if (write_callback_.func || initiate_ssl_callback_.func) |
232 return PP_ERROR_INPROGRESS; | 256 return PP_ERROR_INPROGRESS; |
233 | 257 |
234 if (bytes_to_write > kFlashTCPSocketMaxWriteSize) | 258 if (bytes_to_write > kFlashTCPSocketMaxWriteSize) |
235 bytes_to_write = kFlashTCPSocketMaxWriteSize; | 259 bytes_to_write = kFlashTCPSocketMaxWriteSize; |
236 | 260 |
237 write_callback_ = callback; | 261 write_callback_ = callback; |
238 | 262 |
239 // Send the request, the browser will call us back via WriteACK. | 263 // Send the request, the browser will call us back via WriteACK. |
240 GetDispatcher()->SendToBrowser( | 264 GetDispatcher()->SendToBrowser( |
241 new PpapiHostMsg_PPBFlashTCPSocket_Write( | 265 new PpapiHostMsg_PPBFlashTCPSocket_Write( |
242 socket_id_, std::string(buffer, bytes_to_write))); | 266 socket_id_, std::string(buffer, bytes_to_write))); |
243 return PP_OK_COMPLETIONPENDING; | 267 return PP_OK_COMPLETIONPENDING; |
244 } | 268 } |
245 | 269 |
246 void FlashTCPSocket::Disconnect() { | 270 void FlashTCPSocket::Disconnect() { |
247 if (connection_state_ == DISCONNECTED) | 271 if (connection_state_ == DISCONNECTED) |
248 return; | 272 return; |
249 | 273 |
250 connection_state_ = DISCONNECTED; | 274 connection_state_ = DISCONNECTED; |
251 // After removed from the mapping, this object won't receive any notfications | 275 // After removed from the mapping, this object won't receive any notifications |
252 // from the proxy. | 276 // from the proxy. |
253 DCHECK(g_id_to_socket->find(socket_id_) != g_id_to_socket->end()); | 277 DCHECK(g_id_to_socket->find(socket_id_) != g_id_to_socket->end()); |
254 g_id_to_socket->erase(socket_id_); | 278 g_id_to_socket->erase(socket_id_); |
255 | 279 |
256 GetDispatcher()->SendToBrowser( | 280 GetDispatcher()->SendToBrowser( |
257 new PpapiHostMsg_PPBFlashTCPSocket_Disconnect(socket_id_)); | 281 new PpapiHostMsg_PPBFlashTCPSocket_Disconnect(socket_id_)); |
258 socket_id_ = 0; | 282 socket_id_ = 0; |
259 | 283 |
260 PostAbortAndClearIfNecessary(&connect_callback_); | 284 PostAbortAndClearIfNecessary(&connect_callback_); |
285 PostAbortAndClearIfNecessary(&initiate_ssl_callback_); | |
261 PostAbortAndClearIfNecessary(&read_callback_); | 286 PostAbortAndClearIfNecessary(&read_callback_); |
262 PostAbortAndClearIfNecessary(&write_callback_); | 287 PostAbortAndClearIfNecessary(&write_callback_); |
263 read_buffer_ = NULL; | 288 read_buffer_ = NULL; |
264 bytes_to_read_ = -1; | 289 bytes_to_read_ = -1; |
265 } | 290 } |
266 | 291 |
267 void FlashTCPSocket::OnConnectCompleted( | 292 void FlashTCPSocket::OnConnectCompleted( |
268 bool succeeded, | 293 bool succeeded, |
269 const PP_Flash_NetAddress& local_addr, | 294 const PP_Flash_NetAddress& local_addr, |
270 const PP_Flash_NetAddress& remote_addr) { | 295 const PP_Flash_NetAddress& remote_addr) { |
271 if (connection_state_ != BEFORE_CONNECT || !connect_callback_.func) { | 296 if (connection_state_ != BEFORE_CONNECT || !connect_callback_.func) { |
272 NOTREACHED(); | 297 NOTREACHED(); |
273 return; | 298 return; |
274 } | 299 } |
275 | 300 |
276 if (succeeded) { | 301 if (succeeded) { |
277 local_addr_ = local_addr; | 302 local_addr_ = local_addr; |
278 remote_addr_ = remote_addr; | 303 remote_addr_ = remote_addr; |
279 connection_state_ = CONNECTED; | 304 connection_state_ = CONNECTED; |
280 } | 305 } |
281 PP_RunAndClearCompletionCallback(&connect_callback_, | 306 PP_RunAndClearCompletionCallback(&connect_callback_, |
282 succeeded ? PP_OK : PP_ERROR_FAILED); | 307 succeeded ? PP_OK : PP_ERROR_FAILED); |
283 } | 308 } |
284 | 309 |
310 void FlashTCPSocket::OnInitiateSSLCompleted(bool succeeded) { | |
311 if (connection_state_ != CONNECTED || !initiate_ssl_callback_.func) { | |
312 NOTREACHED(); | |
313 return; | |
314 } | |
315 | |
316 if (succeeded) { | |
317 connection_state_ = SSL_CONNECTED; | |
318 PP_RunAndClearCompletionCallback(&initiate_ssl_callback_, PP_OK); | |
319 } else { | |
320 PP_RunAndClearCompletionCallback(&initiate_ssl_callback_, PP_ERROR_FAILED); | |
321 Disconnect(); | |
322 } | |
323 } | |
324 | |
285 void FlashTCPSocket::OnReadCompleted(bool succeeded, const std::string& data) { | 325 void FlashTCPSocket::OnReadCompleted(bool succeeded, const std::string& data) { |
286 if (!read_callback_.func || !read_buffer_) { | 326 if (!read_callback_.func || !read_buffer_) { |
287 NOTREACHED(); | 327 NOTREACHED(); |
288 return; | 328 return; |
289 } | 329 } |
290 | 330 |
291 if (succeeded) { | 331 if (succeeded) { |
292 CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_); | 332 CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_); |
293 if (!data.empty()) | 333 if (!data.empty()) |
294 memcpy(read_buffer_, data.c_str(), data.size()); | 334 memcpy(read_buffer_, data.c_str(), data.size()); |
(...skipping 11 matching lines...) Expand all Loading... | |
306 if (!write_callback_.func || (succeeded && bytes_written < 0)) { | 346 if (!write_callback_.func || (succeeded && bytes_written < 0)) { |
307 NOTREACHED(); | 347 NOTREACHED(); |
308 return; | 348 return; |
309 } | 349 } |
310 | 350 |
311 PP_RunAndClearCompletionCallback( | 351 PP_RunAndClearCompletionCallback( |
312 &write_callback_, | 352 &write_callback_, |
313 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); | 353 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); |
314 } | 354 } |
315 | 355 |
356 bool FlashTCPSocket::IsConnected() const { | |
357 return connection_state_ == CONNECTED || connection_state_ == SSL_CONNECTED; | |
358 } | |
359 | |
316 int32_t FlashTCPSocket::ConnectWithMessage(IPC::Message* msg, | 360 int32_t FlashTCPSocket::ConnectWithMessage(IPC::Message* msg, |
317 PP_CompletionCallback callback) { | 361 PP_CompletionCallback callback) { |
318 scoped_ptr<IPC::Message> msg_deletor(msg); | 362 scoped_ptr<IPC::Message> msg_deletor(msg); |
319 if (!callback.func) | 363 if (!callback.func) |
320 return PP_ERROR_BADARGUMENT; | 364 return PP_ERROR_BADARGUMENT; |
321 if (connection_state_ != BEFORE_CONNECT) | 365 if (connection_state_ != BEFORE_CONNECT) |
322 return PP_ERROR_FAILED; | 366 return PP_ERROR_FAILED; |
323 if (connect_callback_.func) | 367 if (connect_callback_.func) |
324 return PP_ERROR_INPROGRESS; // Can only have one pending request. | 368 return PP_ERROR_INPROGRESS; // Can only have one pending request. |
325 | 369 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
377 | 421 |
378 linked_ptr<FlashTCPSocket> object(new FlashTCPSocket( | 422 linked_ptr<FlashTCPSocket> object(new FlashTCPSocket( |
379 HostResource::MakeInstanceOnly(instance), socket_id)); | 423 HostResource::MakeInstanceOnly(instance), socket_id)); |
380 return PluginResourceTracker::GetInstance()->AddResource(object); | 424 return PluginResourceTracker::GetInstance()->AddResource(object); |
381 } | 425 } |
382 | 426 |
383 bool PPB_Flash_TCPSocket_Proxy::OnMessageReceived(const IPC::Message& msg) { | 427 bool PPB_Flash_TCPSocket_Proxy::OnMessageReceived(const IPC::Message& msg) { |
384 bool handled = true; | 428 bool handled = true; |
385 IPC_BEGIN_MESSAGE_MAP(PPB_Flash_TCPSocket_Proxy, msg) | 429 IPC_BEGIN_MESSAGE_MAP(PPB_Flash_TCPSocket_Proxy, msg) |
386 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_ConnectACK, OnMsgConnectACK) | 430 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_ConnectACK, OnMsgConnectACK) |
431 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_InitiateSSLACK, | |
432 OnMsgInitiateSSLACK) | |
387 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_ReadACK, OnMsgReadACK) | 433 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_ReadACK, OnMsgReadACK) |
388 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_WriteACK, OnMsgWriteACK) | 434 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashTCPSocket_WriteACK, OnMsgWriteACK) |
389 IPC_MESSAGE_UNHANDLED(handled = false) | 435 IPC_MESSAGE_UNHANDLED(handled = false) |
390 IPC_END_MESSAGE_MAP() | 436 IPC_END_MESSAGE_MAP() |
391 return handled; | 437 return handled; |
392 } | 438 } |
393 | 439 |
394 void PPB_Flash_TCPSocket_Proxy::OnMsgConnectACK( | 440 void PPB_Flash_TCPSocket_Proxy::OnMsgConnectACK( |
395 uint32 /* plugin_dispatcher_id */, | 441 uint32 /* plugin_dispatcher_id */, |
396 uint32 socket_id, | 442 uint32 socket_id, |
397 bool succeeded, | 443 bool succeeded, |
398 const PP_Flash_NetAddress& local_addr, | 444 const PP_Flash_NetAddress& local_addr, |
399 const PP_Flash_NetAddress& remote_addr) { | 445 const PP_Flash_NetAddress& remote_addr) { |
400 if (!g_id_to_socket) { | 446 if (!g_id_to_socket) { |
401 NOTREACHED(); | 447 NOTREACHED(); |
402 return; | 448 return; |
403 } | 449 } |
404 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 450 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
405 if (iter == g_id_to_socket->end()) | 451 if (iter == g_id_to_socket->end()) |
406 return; | 452 return; |
407 iter->second->OnConnectCompleted(succeeded, local_addr, remote_addr); | 453 iter->second->OnConnectCompleted(succeeded, local_addr, remote_addr); |
408 } | 454 } |
409 | 455 |
456 void PPB_Flash_TCPSocket_Proxy::OnMsgInitiateSSLACK( | |
457 uint32 /* plugin_dispatcher_id */, | |
458 uint32 socket_id, | |
459 bool succeeded) { | |
460 if (!g_id_to_socket) { | |
461 NOTREACHED(); | |
462 return; | |
463 } | |
464 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | |
465 if (iter == g_id_to_socket->end()) | |
466 return; | |
467 iter->second->OnInitiateSSLCompleted(succeeded); | |
468 } | |
469 | |
410 void PPB_Flash_TCPSocket_Proxy::OnMsgReadACK(uint32 /* plugin_dispatcher_id */, | 470 void PPB_Flash_TCPSocket_Proxy::OnMsgReadACK(uint32 /* plugin_dispatcher_id */, |
411 uint32 socket_id, | 471 uint32 socket_id, |
412 bool succeeded, | 472 bool succeeded, |
413 const std::string& data) { | 473 const std::string& data) { |
414 if (!g_id_to_socket) { | 474 if (!g_id_to_socket) { |
415 NOTREACHED(); | 475 NOTREACHED(); |
416 return; | 476 return; |
417 } | 477 } |
418 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 478 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
419 if (iter == g_id_to_socket->end()) | 479 if (iter == g_id_to_socket->end()) |
(...skipping 10 matching lines...) Expand all Loading... | |
430 return; | 490 return; |
431 } | 491 } |
432 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 492 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
433 if (iter == g_id_to_socket->end()) | 493 if (iter == g_id_to_socket->end()) |
434 return; | 494 return; |
435 iter->second->OnWriteCompleted(succeeded, bytes_written); | 495 iter->second->OnWriteCompleted(succeeded, bytes_written); |
436 } | 496 } |
437 | 497 |
438 } // namespace proxy | 498 } // namespace proxy |
439 } // namespace pp | 499 } // namespace pp |
OLD | NEW |