| 3320 | |
| 3321 | template <class T> |
| 3322 | class AsyncProgressQueueWorker |
| 3323 | : public AsyncProgressWorkerBase<std::pair<T*, size_t>> { |
| 3324 | public: |
| 3325 | virtual ~AsyncProgressQueueWorker(){}; |
| 3326 | |
| 3327 | class ExecutionProgress { |
| 3328 | friend class AsyncProgressQueueWorker; |
| 3329 | |
| 3330 | public: |
| 3331 | void Signal() const; |
| 3332 | void Send(const T* data, size_t count) const; |
| 3333 | |
| 3334 | private: |
| 3335 | explicit ExecutionProgress(AsyncProgressQueueWorker* worker) |
| 3336 | : _worker(worker) {} |
| 3337 | AsyncProgressQueueWorker* const _worker; |
| 3338 | }; |
| 3339 | |
| 3340 | void OnWorkComplete(Napi::Env env, napi_status status) override; |
| 3341 | void OnWorkProgress(std::pair<T*, size_t>*) override; |
| 3342 | |
| 3343 | protected: |
| 3344 | explicit AsyncProgressQueueWorker(const Function& callback); |
| 3345 | explicit AsyncProgressQueueWorker(const Function& callback, |
| 3346 | const char* resource_name); |
| 3347 | explicit AsyncProgressQueueWorker(const Function& callback, |
| 3348 | const char* resource_name, |
| 3349 | const Object& resource); |
| 3350 | explicit AsyncProgressQueueWorker(const Object& receiver, |
| 3351 | const Function& callback); |
| 3352 | explicit AsyncProgressQueueWorker(const Object& receiver, |
| 3353 | const Function& callback, |
| 3354 | const char* resource_name); |
| 3355 | explicit AsyncProgressQueueWorker(const Object& receiver, |
| 3356 | const Function& callback, |
| 3357 | const char* resource_name, |
| 3358 | const Object& resource); |
| 3359 | |
| 3360 | // Optional callback of Napi::ThreadSafeFunction only available after |
| 3361 | // NAPI_VERSION 4. Refs: https://github.com/nodejs/node/pull/27791 |
| 3362 | #if NAPI_VERSION > 4 |
| 3363 | explicit AsyncProgressQueueWorker(Napi::Env env); |
| 3364 | explicit AsyncProgressQueueWorker(Napi::Env env, const char* resource_name); |
| 3365 | explicit AsyncProgressQueueWorker(Napi::Env env, |
| 3366 | const char* resource_name, |
| 3367 | const Object& resource); |
| 3368 | #endif |
| 3369 | virtual void Execute(const ExecutionProgress& progress) = 0; |
| 3370 | virtual void OnProgress(const T* data, size_t count) = 0; |
| 3371 | |
| 3372 | private: |
| 3373 | void Execute() override; |
| 3374 | void Signal() const; |
| 3375 | void SendProgress_(const T* data, size_t count); |
| 3376 | }; |
| 3377 | #endif // NAPI_VERSION > 3 && NAPI_HAS_THREADS |
| 3378 | |
| 3379 | // Memory management. |
nothing calls this directly
no outgoing calls
no test coverage detected