1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include "assert.h"
#include "napi.h"
using namespace Napi;
#if (NAPI_VERSION > 2)
namespace {
static void RunInCallbackScope(const CallbackInfo& info) {
Function callback = info[0].As<Function>();
AsyncContext context(info.Env(), "callback_scope_test");
CallbackScope scope(info.Env(), context);
callback.Call({});
}
static void RunInCallbackScopeFromExisting(const CallbackInfo& info) {
Function callback = info[0].As<Function>();
Env env = info.Env();
AsyncContext ctx(env, "existing_callback_scope_test");
napi_callback_scope scope;
napi_open_callback_scope(env, Object::New(env), ctx, &scope);
CallbackScope existingScope(env, scope);
assert(existingScope.Env() == env);
callback.Call({});
}
} // namespace
Object InitCallbackScope(Env env) {
Object exports = Object::New(env);
exports["runInCallbackScope"] = Function::New(env, RunInCallbackScope);
exports["runInPreExistingCbScope"] =
Function::New(env, RunInCallbackScopeFromExisting);
return exports;
}
#endif
|