Pepper_56_C++_interfaces
Pepper_56_C++_interfaces
 All Classes Namespaces Files Functions Typedefs Enumerations Macros Groups
completion_callback.h
Go to the documentation of this file.
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef PPAPI_CPP_COMPLETION_CALLBACK_H_
6 #define PPAPI_CPP_COMPLETION_CALLBACK_H_
7 
8 #include <stdint.h>
9 
10 #include "ppapi/c/pp_completion_callback.h"
11 #include "ppapi/c/pp_errors.h"
12 #include "ppapi/cpp/logging.h"
13 #include "ppapi/cpp/module.h"
15 
18 namespace pp {
19 
27  public:
36  cc_ = PP_BlockUntilComplete();
37  }
38 
45  CompletionCallback(PP_CompletionCallback_Func func, void* user_data) {
46  cc_ = PP_MakeCompletionCallback(func, user_data);
47  }
48 
59  CompletionCallback(PP_CompletionCallback_Func func, void* user_data,
60  int32_t flags) {
61  cc_ = PP_MakeCompletionCallback(func, user_data);
62  cc_.flags = flags;
63  }
64 
71  void set_flags(int32_t flags) { cc_.flags = flags; }
72 
84  void Run(int32_t result) {
85  PP_DCHECK(cc_.func);
86  PP_RunCompletionCallback(&cc_, result);
87  }
88 
97  void RunAndClear(int32_t result) {
98  PP_DCHECK(cc_.func);
99  PP_RunAndClearCompletionCallback(&cc_, result);
100  }
101 
115  bool IsOptional() const {
116  return (cc_.func == NULL ||
117  (cc_.flags & PP_COMPLETIONCALLBACK_FLAG_OPTIONAL) != 0);
118  }
119 
124  const PP_CompletionCallback& pp_completion_callback() const { return cc_; }
125 
131  int32_t flags() const { return cc_.flags; }
132 
160  int32_t MayForce(int32_t result) const {
161  if (result == PP_OK_COMPLETIONPENDING || IsOptional())
162  return result;
163  // FIXME(dmichael): Use pp::MessageLoop here once it's out of Dev.
164  Module::Get()->core()->CallOnMainThread(0, *this, result);
165  return PP_OK_COMPLETIONPENDING;
166  }
167 
168  protected:
169  PP_CompletionCallback cc_;
170 };
171 
188 template<typename T>
190  public:
200  APIArgType;
201 
212  : CompletionCallback(),
213  output_(output) {
214  }
215 
225  CompletionCallbackWithOutput(PP_CompletionCallback_Func func,
226  void* user_data,
227  OutputStorageType* output)
228  : CompletionCallback(func, user_data),
229  output_(output) {
230  }
231 
247  CompletionCallbackWithOutput(PP_CompletionCallback_Func func,
248  void* user_data,
249  int32_t flags,
250  OutputStorageType* output)
251  : CompletionCallback(func, user_data, flags),
252  output_(output) {
253  }
254 
255  APIArgType output() const {
257  }
258 
259  private:
260  OutputStorageType* output_;
261 };
262 
270  // Note: Explicitly inlined to avoid link errors when included into
271  // ppapi_proxy and ppapi_cpp_objects.
272  return CompletionCallback();
273 }
274 
275 } // namespace pp
276 
277 #endif // PPAPI_CPP_COMPLETION_CALLBACK_H_
void RunAndClear(int32_t result)
Definition: completion_callback.h:97
Definition: output_traits.h:132
Definition: completion_callback.h:189
internal::CallbackOutputTraits< T >::StorageType OutputStorageType
Definition: completion_callback.h:198
Core * core()
Definition: module.h:74
#define PP_DCHECK(a)
Definition: logging.h:16
CompletionCallbackWithOutput(OutputStorageType *output)
Definition: completion_callback.h:211
static Module * Get()
int32_t MayForce(int32_t result) const
Definition: completion_callback.h:160
const PP_CompletionCallback & pp_completion_callback() const
Definition: completion_callback.h:124
Definition: completion_callback.h:26
void CallOnMainThread(int32_t delay_in_milliseconds, const CompletionCallback &callback, int32_t result=0)
int32_t flags() const
Definition: completion_callback.h:131
CompletionCallback BlockUntilComplete()
Definition: completion_callback.h:269
bool IsOptional() const
Definition: completion_callback.h:115
CompletionCallback(PP_CompletionCallback_Func func, void *user_data, int32_t flags)
Definition: completion_callback.h:59
void set_flags(int32_t flags)
Definition: completion_callback.h:71
CompletionCallback()
Definition: completion_callback.h:35
CompletionCallbackWithOutput(PP_CompletionCallback_Func func, void *user_data, int32_t flags, OutputStorageType *output)
Definition: completion_callback.h:247
void Run(int32_t result)
Definition: completion_callback.h:84
CompletionCallbackWithOutput(PP_CompletionCallback_Func func, void *user_data, OutputStorageType *output)
Definition: completion_callback.h:225
CompletionCallback(PP_CompletionCallback_Func func, void *user_data)
Definition: completion_callback.h:45