mirror of
https://github.com/openharmony/js_worker_module.git
synced 2026-07-19 19:23:34 -04:00
@@ -261,9 +261,8 @@ void Worker::HandleEventListeners(napi_env env, napi_value recv, size_t argc, co
|
||||
std::list<WorkerListener*>::iterator it = listeners.begin();
|
||||
while (it != listeners.end()) {
|
||||
WorkerListener* data = *it++;
|
||||
napi_ref callback = data->GetCallback();
|
||||
napi_value callbackObj = nullptr;
|
||||
napi_get_reference_value(env, callback, &callbackObj);
|
||||
napi_get_reference_value(env, data->callback_, &callbackObj);
|
||||
napi_value callbackResult = nullptr;
|
||||
napi_call_function(env, recv, callbackObj, argc, argv, &callbackResult);
|
||||
if (!data->NextIsAvailable()) {
|
||||
@@ -717,9 +716,8 @@ bool Worker::WorkerListener::operator==(const WorkerListener& listener) const
|
||||
return false;
|
||||
}
|
||||
napi_env env = listener.worker_->GetMainEnv();
|
||||
napi_ref ref = listener.GetCallback();
|
||||
napi_value obj = nullptr;
|
||||
napi_get_reference_value(env, ref, &obj);
|
||||
napi_get_reference_value(env, listener.callback_, &obj);
|
||||
|
||||
napi_value compareObj = nullptr;
|
||||
napi_get_reference_value(env, callback_, &compareObj);
|
||||
@@ -737,7 +735,7 @@ void Worker::AddListenerInner(napi_env env, const char* type, const WorkerListen
|
||||
} else {
|
||||
std::list<WorkerListener*>& listenerList = iter->second;
|
||||
std::list<WorkerListener*>::iterator it = std::find_if(
|
||||
listenerList.begin(), listenerList.end(), Worker::FindWorkerListener(env, listener->GetCallback()));
|
||||
listenerList.begin(), listenerList.end(), Worker::FindWorkerListener(env, listener->callback_));
|
||||
if (it != listenerList.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
+12
-28
@@ -39,8 +39,7 @@ public:
|
||||
|
||||
enum ScriptMode { CLASSIC, MODULE };
|
||||
|
||||
class WorkerListener {
|
||||
public:
|
||||
struct WorkerListener {
|
||||
WorkerListener() : callback_(nullptr), worker_(nullptr), mode_(PERMANENT) {}
|
||||
|
||||
explicit WorkerListener(Worker* worker) : callback_(nullptr), worker_(worker), mode_(PERMANENT) {}
|
||||
@@ -58,16 +57,6 @@ public:
|
||||
return mode_ != ONCE;
|
||||
}
|
||||
|
||||
ListenerMode GetListenerMode() const
|
||||
{
|
||||
return mode_;
|
||||
}
|
||||
|
||||
napi_ref GetCallback() const
|
||||
{
|
||||
return callback_;
|
||||
}
|
||||
|
||||
void SetCallable(napi_env env, napi_value value)
|
||||
{
|
||||
napi_create_reference(env, value, 1, &callback_);
|
||||
@@ -80,7 +69,6 @@ public:
|
||||
|
||||
bool operator==(const WorkerListener& listener) const;
|
||||
|
||||
private:
|
||||
napi_ref callback_ {NULL};
|
||||
Worker* worker_ {nullptr};
|
||||
ListenerMode mode_ {PERMANENT};
|
||||
@@ -91,9 +79,8 @@ public:
|
||||
|
||||
bool operator()(const WorkerListener* listener) const
|
||||
{
|
||||
napi_ref compareRef = listener->GetCallback();
|
||||
napi_value compareObj = nullptr;
|
||||
napi_get_reference_value(env_, compareRef, &compareObj);
|
||||
napi_get_reference_value(env_, listener->callback_, &compareObj);
|
||||
|
||||
napi_value obj = nullptr;
|
||||
napi_get_reference_value(env_, ref_, &obj);
|
||||
@@ -105,7 +92,6 @@ public:
|
||||
napi_env env_ {nullptr};
|
||||
napi_ref ref_ {nullptr};
|
||||
};
|
||||
using FindWorkerListener = struct FindWorkerListener;
|
||||
|
||||
Worker(napi_env env, napi_ref thisVar);
|
||||
~Worker();
|
||||
@@ -170,21 +156,11 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
napi_env GetWorkerEnv() const
|
||||
{
|
||||
return workerEnv_;
|
||||
}
|
||||
|
||||
void SetWorkerEnv(napi_env workerEnv)
|
||||
{
|
||||
workerEnv_ = workerEnv;
|
||||
}
|
||||
|
||||
napi_env GetMainEnv() const
|
||||
{
|
||||
return mainEnv_;
|
||||
}
|
||||
|
||||
std::string GetScript() const
|
||||
{
|
||||
return script_;
|
||||
@@ -247,6 +223,16 @@ private:
|
||||
void CloseWorkerCallback();
|
||||
void CloseMainCallback() const;
|
||||
|
||||
napi_env GetMainEnv() const
|
||||
{
|
||||
return mainEnv_;
|
||||
}
|
||||
|
||||
napi_env GetWorkerEnv() const
|
||||
{
|
||||
return workerEnv_;
|
||||
}
|
||||
|
||||
std::string script_ {};
|
||||
std::string name_ {};
|
||||
ScriptMode scriptMode_ {CLASSIC};
|
||||
@@ -271,8 +257,6 @@ private:
|
||||
std::map<std::string, std::list<WorkerListener*>> eventListeners_ {};
|
||||
|
||||
std::mutex workerAsyncMutex_ {};
|
||||
|
||||
friend class WorkerListener;
|
||||
};
|
||||
} // namespace OHOS::CCRuntime::Worker
|
||||
#endif // FOUNDATION_CCRUNTIME_JSAPI_WORKER_H
|
||||
Reference in New Issue
Block a user