Lines Matching refs:env

122 static void call_js(napi_env env, napi_value cb, void* hint, void* data) {
123 if (!(env == NULL || cb == NULL)) {
125 NODE_API_CALL_RETURN_VOID(env, napi_create_int32(env, *(int*)data, &argv));
126 NODE_API_CALL_RETURN_VOID(env, napi_get_undefined(env, &undefined));
127 NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, undefined, cb, 1, &argv,
134 static void call_ref(napi_env env, napi_value _, void* hint, void* data) {
135 if (!(env == NULL || alt_ref == NULL)) {
137 NODE_API_CALL_RETURN_VOID(env, napi_get_reference_value(env, alt_ref, &fn));
138 NODE_API_CALL_RETURN_VOID(env, napi_create_int32(env, *(int*)data, &argv));
139 NODE_API_CALL_RETURN_VOID(env, napi_get_undefined(env, &undefined));
140 NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, undefined, fn, 1, &argv,
146 static napi_value StopThread(napi_env env, napi_callback_info info) {
149 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL));
151 NODE_API_CALL(env, napi_typeof(env, argv[0], &value_type));
152 NODE_API_ASSERT(env, value_type == napi_function,
154 NODE_API_ASSERT(env, (ts_fn != NULL), "Existing threadsafe function");
155 NODE_API_CALL(env,
156 napi_create_reference(env, argv[0], 1, &(ts_info.js_finalize_cb)));
158 NODE_API_CALL(env, napi_get_value_bool(env, argv[1], &abort));
159 NODE_API_CALL(env,
167 static void join_the_threads(napi_env env, void *data, void *hint) {
177 NODE_API_CALL_RETURN_VOID(env,
178 napi_get_reference_value(env, the_hint->js_finalize_cb, &js_cb));
179 NODE_API_CALL_RETURN_VOID(env, napi_get_undefined(env, &undefined));
180 NODE_API_CALL_RETURN_VOID(env,
181 napi_call_function(env, undefined, js_cb, 0, NULL, NULL));
182 NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env,
185 NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, alt_ref));
190 static napi_value StartThreadInternal(napi_env env,
199 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL));
201 NODE_API_CALL(env, napi_create_reference(env, argv[0], 1, &alt_ref));
208 NODE_API_ASSERT(env, (ts_fn == NULL), "Existing thread-safe function");
210 NODE_API_CALL(env, napi_create_string_utf8(env,
212 NODE_API_CALL(env,
213 napi_get_value_uint32(env, argv[3], &ts_info.max_queue_size));
214 NODE_API_CALL(env, napi_create_threadsafe_function(env,
226 NODE_API_CALL(env, napi_get_value_bool(env, argv[1], &abort));
228 NODE_API_CALL(env,
229 napi_get_value_bool(env, argv[2], &(ts_info.start_secondary)));
231 NODE_API_ASSERT(env,
238 static napi_value Unref(napi_env env, napi_callback_info info) {
239 NODE_API_ASSERT(env, ts_fn != NULL, "No existing thread-safe function");
240 NODE_API_CALL(env, napi_unref_threadsafe_function(env, ts_fn));
244 static napi_value Release(napi_env env, napi_callback_info info) {
245 NODE_API_ASSERT(env, ts_fn != NULL, "No existing thread-safe function");
246 NODE_API_CALL(env, napi_release_threadsafe_function(ts_fn, napi_tsfn_release));
251 static napi_value StartThread(napi_env env, napi_callback_info info) {
252 return StartThreadInternal(env, info, call_js,
256 static napi_value StartThreadNonblocking(napi_env env,
258 return StartThreadInternal(env, info, call_js,
262 static napi_value StartThreadNoNative(napi_env env, napi_callback_info info) {
263 return StartThreadInternal(env, info, NULL,
267 static napi_value StartThreadNoJsFunc(napi_env env, napi_callback_info info) {
268 return StartThreadInternal(env, info, call_ref,
273 static void ThreadSafeFunctionFinalize(napi_env env,
279 NODE_API_CALL_RETURN_VOID(env, napi_get_reference_value(env, js_func_ref, &js_func));
280 NODE_API_CALL_RETURN_VOID(env, napi_get_global(env, &recv));
281 NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, recv, js_func, 0, NULL, NULL));
282 NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, js_func_ref));
286 static napi_value CallIntoModule(napi_env env, napi_callback_info info) {
289 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL));
292 NODE_API_CALL(env, napi_create_reference(env, argv[3], 1, &finalize_func));
295 NODE_API_CALL(env, napi_create_threadsafe_function(env, argv[0], argv[1], argv[2], 0, 1, finalize_func, ThreadSafeFunctionFinalize, NULL, NULL, &tsfn));
296 NODE_API_CALL(env, napi_call_threadsafe_function(tsfn, NULL, napi_tsfn_blocking));
297 NODE_API_CALL(env, napi_release_threadsafe_function(tsfn, napi_tsfn_release));
302 static napi_value Init(napi_env env, napi_value exports) {
308 napi_create_uint32(env, ARRAY_LENGTH, &js_array_length);
309 napi_create_uint32(env, MAX_QUEUE_SIZE, &js_max_queue_size);
342 NODE_API_CALL(env, napi_define_properties(env, exports,