File: threadsafe_function_exception.cc

package info (click to toggle)
node-addon-api 8.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,248 kB
  • sloc: cpp: 15,431; javascript: 5,631; ansic: 157; makefile: 7
file content (50 lines) | stat: -rw-r--r-- 1,330 bytes parent folder | download
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
40
41
42
43
44
45
46
47
48
49
50
#include <cstdlib>
#include "napi.h"
#include "test_helper.h"

#if (NAPI_VERSION > 3)

using namespace Napi;

namespace {

void CallJS(napi_env env, napi_value /* callback */, void* /*data*/) {
  Napi::Error error = Napi::Error::New(env, "test-from-native");
  NAPI_THROW_VOID(error);
}

void TestCall(const CallbackInfo& info) {
  Napi::Env env = info.Env();

  ThreadSafeFunction wrapped =
      ThreadSafeFunction::New(env,
                              info[0].As<Napi::Function>(),
                              Object::New(env),
                              String::New(env, "Test"),
                              0,
                              1);
  wrapped.BlockingCall(static_cast<void*>(nullptr));
  wrapped.Release();
}

void TestCallWithNativeCallback(const CallbackInfo& info) {
  Napi::Env env = info.Env();

  ThreadSafeFunction wrapped = ThreadSafeFunction::New(
      env, Napi::Function(), Object::New(env), String::New(env, "Test"), 0, 1);
  wrapped.BlockingCall(static_cast<void*>(nullptr), CallJS);
  wrapped.Release();
}

}  // namespace

Object InitThreadSafeFunctionException(Env env) {
  Object exports = Object::New(env);
  exports["testCall"] = Function::New(env, TestCall);
  exports["testCallWithNativeCallback"] =
      Function::New(env, TestCallWithNativeCallback);

  return exports;
}

#endif