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

Side by Side Diff: ppapi/thunk/ppb_transport_thunk.cc

Issue 6899055: PPAPI: Force async callback invocation option. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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 | Annotate | Revision Log
« no previous file with comments | « ppapi/thunk/ppb_surface_3d_thunk.cc ('k') | ppapi/thunk/ppb_url_loader_thunk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ppapi/c/pp_completion_callback.h" 5 #include "ppapi/c/pp_completion_callback.h"
6 #include "ppapi/c/pp_errors.h" 6 #include "ppapi/c/pp_errors.h"
7 #include "ppapi/thunk/common.h"
8 #include "ppapi/thunk/enter.h"
7 #include "ppapi/thunk/thunk.h" 9 #include "ppapi/thunk/thunk.h"
8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/ppb_transport_api.h" 10 #include "ppapi/thunk/ppb_transport_api.h"
10 #include "ppapi/thunk/resource_creation_api.h" 11 #include "ppapi/thunk/resource_creation_api.h"
11 12
12 namespace ppapi { 13 namespace ppapi {
13 namespace thunk { 14 namespace thunk {
14 15
15 namespace { 16 namespace {
16 17
17 typedef EnterResource<PPB_Transport_API> EnterTransport; 18 typedef EnterResource<PPB_Transport_API> EnterTransport;
18 19
(...skipping 12 matching lines...) Expand all
31 PP_Bool IsWritable(PP_Resource transport) { 32 PP_Bool IsWritable(PP_Resource transport) {
32 EnterTransport enter(transport, true); 33 EnterTransport enter(transport, true);
33 if (enter.failed()) 34 if (enter.failed())
34 return PP_FALSE; 35 return PP_FALSE;
35 return enter.object()->IsWritable(); 36 return enter.object()->IsWritable();
36 } 37 }
37 38
38 int32_t Connect(PP_Resource transport, PP_CompletionCallback callback) { 39 int32_t Connect(PP_Resource transport, PP_CompletionCallback callback) {
39 EnterTransport enter(transport, true); 40 EnterTransport enter(transport, true);
40 if (enter.failed()) 41 if (enter.failed())
41 return PP_ERROR_BADRESOURCE; 42 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
42 return enter.object()->Connect(callback); 43 int32_t result = enter.object()->Connect(callback);
44 return MayForceCallback(callback, result);
43 } 45 }
44 46
45 int32_t GetNextAddress(PP_Resource transport, PP_Var* address, 47 int32_t GetNextAddress(PP_Resource transport, PP_Var* address,
46 PP_CompletionCallback callback) { 48 PP_CompletionCallback callback) {
47 EnterTransport enter(transport, true); 49 EnterTransport enter(transport, true);
48 if (enter.failed()) 50 if (enter.failed())
49 return PP_ERROR_BADRESOURCE; 51 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
50 return enter.object()->GetNextAddress(address, callback); 52 int32_t result = enter.object()->GetNextAddress(address, callback);
53 return MayForceCallback(callback, result);
51 } 54 }
52 55
53 int32_t ReceiveRemoteAddress(PP_Resource transport, PP_Var address) { 56 int32_t ReceiveRemoteAddress(PP_Resource transport, PP_Var address) {
54 EnterTransport enter(transport, true); 57 EnterTransport enter(transport, true);
55 if (enter.failed()) 58 if (enter.failed())
56 return PP_ERROR_BADRESOURCE; 59 return PP_ERROR_BADRESOURCE;
57 return enter.object()->ReceiveRemoteAddress(address); 60 return enter.object()->ReceiveRemoteAddress(address);
58 } 61 }
59 62
60 int32_t Recv(PP_Resource transport, void* data, uint32_t len, 63 int32_t Recv(PP_Resource transport, void* data, uint32_t len,
61 PP_CompletionCallback callback) { 64 PP_CompletionCallback callback) {
62 EnterTransport enter(transport, true); 65 EnterTransport enter(transport, true);
63 if (enter.failed()) 66 if (enter.failed())
64 return PP_ERROR_BADRESOURCE; 67 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
65 return enter.object()->Recv(data, len, callback); 68 int32_t result = enter.object()->Recv(data, len, callback);
69 return MayForceCallback(callback, result);
66 } 70 }
67 71
68 int32_t Send(PP_Resource transport, const void* data, uint32_t len, 72 int32_t Send(PP_Resource transport, const void* data, uint32_t len,
69 PP_CompletionCallback callback) { 73 PP_CompletionCallback callback) {
70 EnterTransport enter(transport, true); 74 EnterTransport enter(transport, true);
71 if (enter.failed()) 75 if (enter.failed())
72 return PP_ERROR_BADRESOURCE; 76 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
73 return enter.object()->Send(data, len, callback); 77 int32_t result = enter.object()->Send(data, len, callback);
78 return MayForceCallback(callback, result);
74 } 79 }
75 80
76 int32_t Close(PP_Resource transport) { 81 int32_t Close(PP_Resource transport) {
77 EnterTransport enter(transport, true); 82 EnterTransport enter(transport, true);
78 if (enter.failed()) 83 if (enter.failed())
79 return PP_ERROR_BADRESOURCE; 84 return PP_ERROR_BADRESOURCE;
80 return enter.object()->Close(); 85 return enter.object()->Close();
81 } 86 }
82 87
83 const PPB_Transport_Dev g_ppb_transport_thunk = { 88 const PPB_Transport_Dev g_ppb_transport_thunk = {
84 &Create, 89 &Create,
85 &IsTransport, 90 &IsTransport,
86 &IsWritable, 91 &IsWritable,
87 &Connect, 92 &Connect,
88 &GetNextAddress, 93 &GetNextAddress,
89 &ReceiveRemoteAddress, 94 &ReceiveRemoteAddress,
90 &Recv, 95 &Recv,
91 &Send, 96 &Send,
92 &Close, 97 &Close,
93 }; 98 };
94 99
95 } // namespace 100 } // namespace
96 101
97 const PPB_Transport_Dev* GetPPB_Transport_Thunk() { 102 const PPB_Transport_Dev* GetPPB_Transport_Thunk() {
98 return &g_ppb_transport_thunk; 103 return &g_ppb_transport_thunk;
99 } 104 }
100 105
101 } // namespace thunk 106 } // namespace thunk
102 } // namespace ppapi 107 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_surface_3d_thunk.cc ('k') | ppapi/thunk/ppb_url_loader_thunk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698