diff --git a/frameworks/napi/include/events_emitter.h b/frameworks/napi/include/events_emitter.h index 3bf4b55e2cf1181b306b5122da318a08c726174b..65fd06aa1e91404a18cb73d46cdcd77680645c0c 100644 --- a/frameworks/napi/include/events_emitter.h +++ b/frameworks/napi/include/events_emitter.h @@ -58,10 +58,6 @@ struct Val { } value; }; -struct EventData { - std::map data; -}; - struct AsyncCallbackInfo { napi_env env; bool once = false; @@ -69,9 +65,8 @@ struct AsyncCallbackInfo { napi_ref callback = 0; }; -struct CallbackInfos { - std::vector asyncCallbackInfo; -}; +using EventData = std::map; +using CallbackInfos = std::vector; struct EventDataWorker { EventData data; diff --git a/frameworks/napi/src/events_emitter.cpp b/frameworks/napi/src/events_emitter.cpp index 85cfac7020804513fb666e5409c3d7dc6a51cbd0..6ef8e7f213c9ef74bfc07b6bf97460ccd77ddda7 100644 --- a/frameworks/napi/src/events_emitter.cpp +++ b/frameworks/napi/src/events_emitter.cpp @@ -56,7 +56,7 @@ namespace AppExecFwk { { napi_value data = nullptr; napi_create_object(env, &data); - for (map::iterator it = eventData.data.begin(); it != eventData.data.end(); it++) { + for (map::iterator it = eventData.begin(); it != eventData.end(); it++) { string key = it->first; Val val = it->second; napi_value napiValue = nullptr; @@ -120,9 +120,9 @@ namespace AppExecFwk { } CallbackInfos& callbackInfos = subscribe->second; - HILOGI("ProcessEvent, size = %{public}zu", callbackInfos.asyncCallbackInfo.size()); + HILOGI("ProcessEvent, size = %{public}zu", callbackInfos.size()); EventData eventData = *(event->GetUniqueObject()); - for (auto iter = callbackInfos.asyncCallbackInfo.begin(); iter != callbackInfos.asyncCallbackInfo.end();) { + for (auto iter = callbackInfos.begin(); iter != callbackInfos.end();) { AsyncCallbackInfo* callbackInfo = *iter; HILOGI("Prepare to process callbackInfo %{public}p", callbackInfo); EventDataWorker* eventDataWorker = new (std::nothrow) EventDataWorker(); @@ -130,7 +130,7 @@ namespace AppExecFwk { HILOGE("new object failed"); continue; } - + eventDataWorker->data = eventData; eventDataWorker->callbackInfo = callbackInfo; @@ -155,8 +155,8 @@ namespace AppExecFwk { }); if (callbackInfo->once || callbackInfo->isDeleted) { HILOGI("ProcessEvent once callback or isDeleted callback"); - iter = callbackInfos.asyncCallbackInfo.erase(iter); - if (callbackInfos.asyncCallbackInfo.begin() == callbackInfos.asyncCallbackInfo.end()) { + iter = callbackInfos.erase(iter); + if (callbackInfos.begin() == callbackInfos.end()) { emitterInstances.erase(eventId); HILOGI("ProcessEvent delete the last callback"); break; @@ -174,7 +174,7 @@ namespace AppExecFwk { if (subscribe == emitterInstances.end()) { return false; } - vector callbackInfo = subscribe->second.asyncCallbackInfo; + vector callbackInfo = subscribe->second; size_t callbackSize = callbackInfo.size(); napi_value callback = nullptr; for (size_t i = 0; i < callbackSize; i++) { @@ -243,7 +243,7 @@ namespace AppExecFwk { callbackInfo->env = env; callbackInfo->once = once; napi_create_reference(env, argv[1], 1, &callbackInfo->callback); - emitterInstances[eventIdValue].asyncCallbackInfo.push_back(callbackInfo); + emitterInstances[eventIdValue].push_back(callbackInfo); HILOGI("OnOrOnce callbackInfo = %{public}p", callbackInfo); } return nullptr; @@ -272,7 +272,7 @@ namespace AppExecFwk { napi_get_value_uint32(env, argv[0], &eventId); auto subscribe = emitterInstances.find(eventId); if (subscribe != emitterInstances.end()) { - for (auto callbackInfo : subscribe->second.asyncCallbackInfo) { + for (auto callbackInfo : subscribe->second) { HILOGI("JS_Off callbackInfo = %{public}p", callbackInfo); callbackInfo->isDeleted = true; } @@ -356,13 +356,13 @@ namespace AppExecFwk { HILOGE("new object failed"); return false; } - + if (!ParseEventData(env, key, data, val, keyChars)) { delete val; val = nullptr; continue; } - eventData.data.insert(make_pair(keyChars, *val)); + eventData.insert(make_pair(keyChars, *val)); hasEventData = true; delete val; val = nullptr; @@ -385,7 +385,7 @@ namespace AppExecFwk { HILOGW("JS_Emit has no callback"); return false; } - vector callbackInfo = subscribe->second.asyncCallbackInfo; + vector callbackInfo = subscribe->second; size_t callbackSize = callbackInfo.size(); for (size_t i = 0; i < callbackSize; i++) { if (!callbackInfo[i]->isDeleted) {