@@ -213,6 +213,14 @@ static inline CallJsWrapper(napi_env env, napi_value jsCallback, void * /*contex
213
213
Function (env, jsCallback).Call (0 , nullptr );
214
214
}
215
215
}
216
+
217
+ template <typename CallbackType>
218
+ typename ThreadSafeFunctionEx<>::DefaultFunctionType
219
+ DefaultCallbackWrapper (
220
+ napi_env env, CallbackType cb) {
221
+ return ThreadSafeFunctionEx<>::DefaultFunctionFactory (env);
222
+ }
223
+
216
224
#endif
217
225
218
226
template <typename Getter, typename Setter>
@@ -4342,28 +4350,6 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4342
4350
return tsfn;
4343
4351
}
4344
4352
4345
- // static, with Callback [nullptr] Resource [missing] Finalizer [missing]
4346
- template <typename ContextType, typename DataType,
4347
- void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
4348
- template <typename ResourceString>
4349
- inline ThreadSafeFunctionEx<ContextType, DataType, CallJs>
4350
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4351
- napi_env env, std::nullptr_t callback, ResourceString resourceName, size_t maxQueueSize,
4352
- size_t initialThreadCount, ContextType *context) {
4353
- ThreadSafeFunctionEx<ContextType, DataType, CallJs> tsfn;
4354
-
4355
- napi_status status = napi_create_threadsafe_function (
4356
- env, nullptr , nullptr , String::From (env, resourceName), maxQueueSize,
4357
- initialThreadCount, nullptr , nullptr , context,
4358
- CallJsInternal, &tsfn._tsfn );
4359
- if (status != napi_ok) {
4360
- NAPI_THROW_IF_FAILED (env, status,
4361
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>());
4362
- }
4363
-
4364
- return tsfn;
4365
- }
4366
-
4367
4353
// static, with Callback [missing] Resource [passed] Finalizer [missing]
4368
4354
template <typename ContextType, typename DataType,
4369
4355
void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
@@ -4386,28 +4372,6 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4386
4372
return tsfn;
4387
4373
}
4388
4374
4389
- // static, with Callback [nullptr] Resource [passed] Finalizer [missing]
4390
- template <typename ContextType, typename DataType,
4391
- void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
4392
- template <typename ResourceString>
4393
- inline ThreadSafeFunctionEx<ContextType, DataType, CallJs>
4394
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4395
- napi_env env, std::nullptr_t callback, const Object &resource, ResourceString resourceName,
4396
- size_t maxQueueSize, size_t initialThreadCount, ContextType *context) {
4397
- ThreadSafeFunctionEx<ContextType, DataType, CallJs> tsfn;
4398
-
4399
- napi_status status = napi_create_threadsafe_function (
4400
- env, nullptr , resource, String::From (env, resourceName), maxQueueSize,
4401
- initialThreadCount, nullptr , nullptr , context, CallJsInternal,
4402
- &tsfn._tsfn );
4403
- if (status != napi_ok) {
4404
- NAPI_THROW_IF_FAILED (env, status,
4405
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>());
4406
- }
4407
-
4408
- return tsfn;
4409
- }
4410
-
4411
4375
// static, with Callback [missing] Resource [missing] Finalizer [passed]
4412
4376
template <typename ContextType, typename DataType,
4413
4377
void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
@@ -4438,36 +4402,6 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4438
4402
return tsfn;
4439
4403
}
4440
4404
4441
- // static, with Callback [nullptr] Resource [missing] Finalizer [passed]
4442
- template <typename ContextType, typename DataType,
4443
- void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
4444
- template <typename ResourceString, typename Finalizer,
4445
- typename FinalizerDataType>
4446
- inline ThreadSafeFunctionEx<ContextType, DataType, CallJs>
4447
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4448
- napi_env env, std::nullptr_t callback, ResourceString resourceName, size_t maxQueueSize,
4449
- size_t initialThreadCount, ContextType *context, Finalizer finalizeCallback,
4450
- FinalizerDataType *data) {
4451
- ThreadSafeFunctionEx<ContextType, DataType, CallJs> tsfn;
4452
-
4453
- auto *finalizeData = new details::ThreadSafeFinalize<ContextType, Finalizer,
4454
- FinalizerDataType>(
4455
- {data, finalizeCallback});
4456
- napi_status status = napi_create_threadsafe_function (
4457
- env, nullptr , nullptr , String::From (env, resourceName), maxQueueSize,
4458
- initialThreadCount, finalizeData,
4459
- details::ThreadSafeFinalize<ContextType, Finalizer, FinalizerDataType>::
4460
- FinalizeFinalizeWrapperWithDataAndContext,
4461
- context, CallJsInternal, &tsfn._tsfn );
4462
- if (status != napi_ok) {
4463
- delete finalizeData;
4464
- NAPI_THROW_IF_FAILED (env, status,
4465
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>());
4466
- }
4467
-
4468
- return tsfn;
4469
- }
4470
-
4471
4405
// static, with Callback [missing] Resource [passed] Finalizer [passed]
4472
4406
template <typename ContextType, typename DataType,
4473
4407
void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
@@ -4497,36 +4431,6 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4497
4431
4498
4432
return tsfn;
4499
4433
}
4500
-
4501
- // static, with Callback [nullptr] Resource [passed] Finalizer [passed]
4502
- template <typename ContextType, typename DataType,
4503
- void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
4504
- template <typename ResourceString, typename Finalizer,
4505
- typename FinalizerDataType>
4506
- inline ThreadSafeFunctionEx<ContextType, DataType, CallJs>
4507
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4508
- napi_env env, std::nullptr_t callback, const Object &resource, ResourceString resourceName,
4509
- size_t maxQueueSize, size_t initialThreadCount, ContextType *context,
4510
- Finalizer finalizeCallback, FinalizerDataType *data) {
4511
- ThreadSafeFunctionEx<ContextType, DataType, CallJs> tsfn;
4512
-
4513
- auto *finalizeData = new details::ThreadSafeFinalize<ContextType, Finalizer,
4514
- FinalizerDataType>(
4515
- {data, finalizeCallback});
4516
- napi_status status = napi_create_threadsafe_function (
4517
- env, nullptr , resource, String::From (env, resourceName), maxQueueSize,
4518
- initialThreadCount, finalizeData,
4519
- details::ThreadSafeFinalize<ContextType, Finalizer, FinalizerDataType>::
4520
- FinalizeFinalizeWrapperWithDataAndContext,
4521
- context, CallJsInternal, &tsfn._tsfn );
4522
- if (status != napi_ok) {
4523
- delete finalizeData;
4524
- NAPI_THROW_IF_FAILED (env, status,
4525
- ThreadSafeFunctionEx<ContextType, DataType, CallJs>());
4526
- }
4527
-
4528
- return tsfn;
4529
- }
4530
4434
#endif
4531
4435
4532
4436
// static, with Callback [passed] Resource [missing] Finalizer [missing]
@@ -4607,11 +4511,11 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4607
4511
// static, with: Callback [passed] Resource [passed] Finalizer [passed]
4608
4512
template <typename ContextType, typename DataType,
4609
4513
void (*CallJs)(Napi::Env, Napi::Function, ContextType *, DataType *)>
4610
- template <typename ResourceString, typename Finalizer,
4514
+ template <typename CallbackType, typename ResourceString, typename Finalizer,
4611
4515
typename FinalizerDataType>
4612
4516
inline ThreadSafeFunctionEx<ContextType, DataType, CallJs>
4613
4517
ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4614
- napi_env env, const Function & callback, const Object &resource,
4518
+ napi_env env, CallbackType callback, const Object &resource,
4615
4519
ResourceString resourceName, size_t maxQueueSize, size_t initialThreadCount,
4616
4520
ContextType *context, Finalizer finalizeCallback, FinalizerDataType *data) {
4617
4521
ThreadSafeFunctionEx<ContextType, DataType, CallJs> tsfn;
@@ -4620,7 +4524,7 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::New(
4620
4524
FinalizerDataType>(
4621
4525
{data, finalizeCallback});
4622
4526
napi_status status = napi_create_threadsafe_function (
4623
- env, callback, resource, String::From (env, resourceName), maxQueueSize,
4527
+ env, details::DefaultCallbackWrapper<CallbackType>(env, callback) , resource, String::From (env, resourceName), maxQueueSize,
4624
4528
initialThreadCount, finalizeData,
4625
4529
details::ThreadSafeFinalize<ContextType, Finalizer, FinalizerDataType>::
4626
4530
FinalizeFinalizeWrapperWithDataAndContext,
@@ -4743,6 +4647,7 @@ ThreadSafeFunctionEx<ContextType, DataType, CallJs>::DefaultFunctionFactory(
4743
4647
#endif
4744
4648
}
4745
4649
4650
+
4746
4651
// //////////////////////////////////////////////////////////////////////////////
4747
4652
// ThreadSafeFunction class
4748
4653
// //////////////////////////////////////////////////////////////////////////////
0 commit comments