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

Side by Side Diff: webkit/plugins/ppapi/ppb_transport_impl.cc

Issue 6899055: PPAPI: Force async callback invocation option. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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 (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 "webkit/plugins/ppapi/ppb_transport_impl.h" 5 #include "webkit/plugins/ppapi/ppb_transport_impl.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "net/socket/socket.h" 11 #include "net/socket/socket.h"
12 #include "ppapi/c/dev/ppb_transport_dev.h" 12 #include "ppapi/c/dev/ppb_transport_dev.h"
13 #include "ppapi/c/pp_completion_callback.h" 13 #include "ppapi/c/pp_completion_callback.h"
14 #include "ppapi/c/pp_errors.h" 14 #include "ppapi/c/pp_errors.h"
15 #include "ppapi/thunk/common.h"
15 #include "webkit/plugins/ppapi/common.h" 16 #include "webkit/plugins/ppapi/common.h"
16 #include "webkit/plugins/ppapi/plugin_module.h" 17 #include "webkit/plugins/ppapi/plugin_module.h"
17 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 18 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
18 #include "webkit/plugins/ppapi/var.h" 19 #include "webkit/plugins/ppapi/var.h"
19 20
21 using ppapi::thunk::MayForceCallback;
20 using webkit_glue::P2PTransport; 22 using webkit_glue::P2PTransport;
21 23
22 namespace webkit { 24 namespace webkit {
23 namespace ppapi { 25 namespace ppapi {
24 26
25 namespace { 27 namespace {
26 28
27 const char kUdpProtocolName[] = "udp"; 29 const char kUdpProtocolName[] = "udp";
28 const char kTcpProtocolName[] = "tcp"; 30 const char kTcpProtocolName[] = "tcp";
29 31
(...skipping 16 matching lines...) Expand all
46 48
47 PP_Bool IsWritable(PP_Resource resource) { 49 PP_Bool IsWritable(PP_Resource resource) {
48 scoped_refptr<PPB_Transport_Impl> t( 50 scoped_refptr<PPB_Transport_Impl> t(
49 Resource::GetAs<PPB_Transport_Impl>(resource)); 51 Resource::GetAs<PPB_Transport_Impl>(resource));
50 return BoolToPPBool((t.get()) ? t->IsWritable() : false); 52 return BoolToPPBool((t.get()) ? t->IsWritable() : false);
51 } 53 }
52 54
53 int32_t Connect(PP_Resource resource, PP_CompletionCallback callback) { 55 int32_t Connect(PP_Resource resource, PP_CompletionCallback callback) {
54 scoped_refptr<PPB_Transport_Impl> t( 56 scoped_refptr<PPB_Transport_Impl> t(
55 Resource::GetAs<PPB_Transport_Impl>(resource)); 57 Resource::GetAs<PPB_Transport_Impl>(resource));
56 return (t.get()) ? t->Connect(callback) : PP_ERROR_BADRESOURCE; 58 if (!t.get())
59 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
60 return MayForceCallback(callback, t->Connect(callback));
57 } 61 }
58 62
59 int32_t GetNextAddress(PP_Resource resource, PP_Var* address, 63 int32_t GetNextAddress(PP_Resource resource, PP_Var* address,
60 PP_CompletionCallback callback) { 64 PP_CompletionCallback callback) {
61 scoped_refptr<PPB_Transport_Impl> t( 65 scoped_refptr<PPB_Transport_Impl> t(
62 Resource::GetAs<PPB_Transport_Impl>(resource)); 66 Resource::GetAs<PPB_Transport_Impl>(resource));
63 return (t.get())? t->GetNextAddress(address, callback) : PP_ERROR_BADRESOURCE; 67 if (!t.get())
68 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
69 return MayForceCallback(callback, t->GetNextAddress(address, callback));
64 } 70 }
65 71
66 int32_t ReceiveRemoteAddress(PP_Resource resource, PP_Var address) { 72 int32_t ReceiveRemoteAddress(PP_Resource resource, PP_Var address) {
67 scoped_refptr<PPB_Transport_Impl> t( 73 scoped_refptr<PPB_Transport_Impl> t(
68 Resource::GetAs<PPB_Transport_Impl>(resource)); 74 Resource::GetAs<PPB_Transport_Impl>(resource));
69 return (t.get())? t->ReceiveRemoteAddress(address) : PP_ERROR_BADRESOURCE; 75 return (t.get())? t->ReceiveRemoteAddress(address) : PP_ERROR_BADRESOURCE;
70 } 76 }
71 77
72 int32_t Recv(PP_Resource resource, void* data, uint32_t len, 78 int32_t Recv(PP_Resource resource, void* data, uint32_t len,
73 PP_CompletionCallback callback) { 79 PP_CompletionCallback callback) {
74 scoped_refptr<PPB_Transport_Impl> t( 80 scoped_refptr<PPB_Transport_Impl> t(
75 Resource::GetAs<PPB_Transport_Impl>(resource)); 81 Resource::GetAs<PPB_Transport_Impl>(resource));
76 return (t.get())? t->Recv(data, len, callback) : PP_ERROR_BADRESOURCE; 82 if (!t.get())
83 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
84 return MayForceCallback(callback, t->Recv(data, len, callback));
77 } 85 }
78 86
79 int32_t Send(PP_Resource resource, const void* data, uint32_t len, 87 int32_t Send(PP_Resource resource, const void* data, uint32_t len,
80 PP_CompletionCallback callback) { 88 PP_CompletionCallback callback) {
81 scoped_refptr<PPB_Transport_Impl> t( 89 scoped_refptr<PPB_Transport_Impl> t(
82 Resource::GetAs<PPB_Transport_Impl>(resource)); 90 Resource::GetAs<PPB_Transport_Impl>(resource));
83 return (t.get())? t->Send(data, len, callback) : PP_ERROR_BADRESOURCE; 91 if (!t.get())
92 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
93 return MayForceCallback(callback, t->Send(data, len, callback));
84 } 94 }
85 95
86 // Disconnects from the remote peer. 96 // Disconnects from the remote peer.
87 int32_t Close(PP_Resource resource) { 97 int32_t Close(PP_Resource resource) {
88 scoped_refptr<PPB_Transport_Impl> t( 98 scoped_refptr<PPB_Transport_Impl> t(
89 Resource::GetAs<PPB_Transport_Impl>(resource)); 99 Resource::GetAs<PPB_Transport_Impl>(resource));
90 return (t.get())? t->Close() : PP_ERROR_BADRESOURCE; 100 return (t.get())? t->Close() : PP_ERROR_BADRESOURCE;
91 } 101 }
92 102
93 const PPB_Transport_Dev ppb_transport = { 103 const PPB_Transport_Dev ppb_transport = {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 void PPB_Transport_Impl::OnWritten(int result) { 331 void PPB_Transport_Impl::OnWritten(int result) {
322 DCHECK(send_callback_.get() && !send_callback_->completed()); 332 DCHECK(send_callback_.get() && !send_callback_->completed());
323 333
324 scoped_refptr<TrackedCompletionCallback> callback; 334 scoped_refptr<TrackedCompletionCallback> callback;
325 callback.swap(send_callback_); 335 callback.swap(send_callback_);
326 callback->Run(MapNetError(result)); 336 callback->Run(MapNetError(result));
327 } 337 }
328 338
329 } // namespace ppapi 339 } // namespace ppapi
330 } // namespace webkit 340 } // namespace webkit
OLDNEW
« ppapi/tests/test_directory_reader.cc ('K') | « webkit/plugins/ppapi/ppb_surface_3d_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698