diff --git a/interfaces/kits/ani/common_event/ets/commonEvent/commonEventSubscriber.ets b/interfaces/kits/ani/common_event/ets/commonEvent/commonEventSubscriber.ets index 846546e29c7751b0d4753de7e876bc8bb923f1f3..f7b5907a01bd3b436793f2d63bea61ae73d18583 100644 --- a/interfaces/kits/ani/common_event/ets/commonEvent/commonEventSubscriber.ets +++ b/interfaces/kits/ani/common_event/ets/commonEvent/commonEventSubscriber.ets @@ -36,21 +36,21 @@ type ResolveCallback = (data: T) => void; type RejectCallback = (err: Error) => void; const TAG: string = 'commonEventSubscriber'; export interface CommonEventSubscriber { - getCode(callback: AsyncCallback): void; - getCode(): Promise; - getCodeSync(): number; - setCode(code: number, callback: AsyncCallback): void; - setCode(code: number): Promise; - setCodeSync(code: number): void; + getCode(callback: AsyncCallback): void; + getCode(): Promise; + getCodeSync(): int; + setCode(code: int, callback: AsyncCallback): void; + setCode(code: int): Promise; + setCodeSync(code: int): void; getData(callback: AsyncCallback): void; getData(): Promise; getDataSync(): string; setData(data: string, callback: AsyncCallback): void; setData(data: string): Promise; setDataSync(data: string): void; - setCodeAndData(code: number, data: string, callback: AsyncCallback): void; - setCodeAndData(code: number, data: string): Promise; - setCodeAndDataSync(code: number, data: string): void; + setCodeAndData(code: int, data: string, callback: AsyncCallback): void; + setCodeAndData(code: int, data: string): Promise; + setCodeAndDataSync(code: int, data: string): void; isOrderedCommonEvent(callback: AsyncCallback): void; isOrderedCommonEvent(): Promise; isOrderedCommonEventSync(): boolean; @@ -77,7 +77,7 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { static {loadLibrary("ani_commoneventmanager.z")} private subscriberInstanceWrapper: long = 0; - public native nativeGetCode(): number; + public native nativeGetCode(): int; public native nativeSetCode(code: int): int; public native nativeGetData(): string; public native nativeSetData(data: string): int; @@ -100,23 +100,23 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { return CommonEventSubscriberInner.transferToStaticSubscriber(input); } - public getCode(callback: AsyncCallback): void { - let p = taskpool.execute((): number => { return this.nativeGetCode(); }); + public getCode(callback: AsyncCallback): void { + let p = taskpool.execute((): int => { return this.nativeGetCode(); }); p.then((data: NullishType): void => { - let ret : number = data as number; + let ret : int = data as int; callback(null, ret); }, (error: Error): void => { - let ret: number = -1; + let ret: int = -1; let err: BusinessError = error as BusinessError; callback(err, ret); }); } - public getCode(): Promise { - let pPromise = new Promise((resolve: ResolveCallback, reject: RejectCallback): void => { - let p = taskpool.execute((): number => { return this.nativeGetCode(); }); + public getCode(): Promise { + let pPromise = new Promise((resolve: ResolveCallback, reject: RejectCallback): void => { + let p = taskpool.execute((): int => { return this.nativeGetCode(); }); p.then((data: NullishType): void => { - let ret : number = data as number; + let ret : int = data as int; resolve(ret); }, (error: Error): void => { reject(error); @@ -125,19 +125,18 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { return pPromise; } - public getCodeSync(): number { - let ret : number = 0; + public getCodeSync(): int { + let ret : int = 0; try { - ret = this.nativeGetCode() as number; + ret = this.nativeGetCode() as int; return ret; } catch (err) { return ret; } } - public setCode(code: number, callback: AsyncCallback): void { - let pcode: Int = code as Int; - let p = taskpool.execute((): int => { return this.nativeSetCode(pcode); }); + public setCode(code: int, callback: AsyncCallback): void { + let p = taskpool.execute((): int => { return this.nativeSetCode(code); }); p.then((data: NullishType): void => { callback(null, undefined); }, (error: Error): void => { @@ -146,10 +145,9 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { }); } - public setCode(code: number): Promise { - let pcode: Int = code as Int; + public setCode(code: int): Promise { let pPromise = new Promise((resolve: ResolveCallback, reject: RejectCallback): void => { - let p = taskpool.execute((): int => { return this.nativeSetCode(pcode); }); + let p = taskpool.execute((): int => { return this.nativeSetCode(code); }); p.then((data: NullishType): void => { resolve(undefined); }, (error: Error): void => { @@ -159,10 +157,9 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { return pPromise; } - public setCodeSync(code: number): void { + public setCodeSync(code: int): void { try { - let pcode: Int = code as Int; - this.nativeSetCode(pcode); + this.nativeSetCode(code); return; } catch (err) { hilog.error(0xD001202, TAG, 'asyncResult is nullptr'); @@ -234,9 +231,8 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { } } - public setCodeAndData(code: number, data: string, callback: AsyncCallback): void { - let pcode: Int = code as Int; - let p = taskpool.execute((): int => { return this.nativeSetCodeAndData(pcode, data); }); + public setCodeAndData(code: int, data: string, callback: AsyncCallback): void { + let p = taskpool.execute((): int => { return this.nativeSetCodeAndData(code, data); }); p.then((e: NullishType): void => { callback(null, undefined); }, (error: Error): void => { @@ -245,10 +241,9 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { }) } - public setCodeAndData(code: number, data: string): Promise { - let pcode: Int = code as Int; + public setCodeAndData(code: int, data: string): Promise { let pPromise = new Promise((resolve: ResolveCallback, reject: RejectCallback): void => { - let p = taskpool.execute((): int => { return this.nativeSetCodeAndData(pcode, data); }); + let p = taskpool.execute((): int => { return this.nativeSetCodeAndData(code, data); }); p.then((data: NullishType): void => { resolve(undefined); }, (error: Error): void => { @@ -258,10 +253,9 @@ class CommonEventSubscriberInner implements CommonEventSubscriber { return pPromise; } - public setCodeAndDataSync(code: number, data: string): void { + public setCodeAndDataSync(code: int, data: string): void { try { - let pcode: Int = code as Int; - this.nativeSetCodeAndData(pcode, data); + this.nativeSetCodeAndData(code, data); return; } catch (err) { hilog.error(0xD001202, TAG, 'asyncResult is nullptr'); diff --git a/interfaces/kits/ani/common_event/include/ani_common_event_utils.h b/interfaces/kits/ani/common_event/include/ani_common_event_utils.h index b24e577a3b40118570bfb08e537a1df1faa74341..7b06e35001711bf97c8d50a517be6b94cfd11587 100644 --- a/interfaces/kits/ani/common_event/include/ani_common_event_utils.h +++ b/interfaces/kits/ani/common_event/include/ani_common_event_utils.h @@ -52,6 +52,7 @@ public: static void CreateNewObjectByClass(ani_env* env, const char* className, ani_class &cls, ani_object& ani_data); template static void CallSetter(ani_env* env, ani_class cls, ani_object object, const char* setterName, valueType value); + static void CreateAniIntObject(ani_env* env, ani_object &object, ani_int value); static void CreateAniDoubleObject(ani_env* env, ani_object &object, ani_double value); static void CreateBusinessErrorObject(ani_env* env, ani_object &object, int32_t code, const std::string &message); static ani_object GetAniStringArray(ani_env *env, std::vector strs); diff --git a/interfaces/kits/ani/common_event/src/ani_common_event.cpp b/interfaces/kits/ani/common_event/src/ani_common_event.cpp index eee5523cd3c554891092ed5a775e8ef511bc073e..9592d3ffd3c08f88735f620a8f5828a9edc552aa 100644 --- a/interfaces/kits/ani/common_event/src/ani_common_event.cpp +++ b/interfaces/kits/ani/common_event/src/ani_common_event.cpp @@ -726,7 +726,7 @@ std::shared_ptr GetAsyncCommonEventResult(std::shared_pt return nullptr; } -static ani_double getCode(ani_env *env, ani_object object) +static ani_int getCode(ani_env *env, ani_object object) { EVENT_LOGI("subscriberInstance getCode."); auto subscriberRes = GetAsyncCommonEventResult(env, object); @@ -734,11 +734,10 @@ static ani_double getCode(ani_env *env, ani_object object) if (subscriberRes != nullptr) { code = subscriberRes->GetCode(); } - ani_double returncode = static_cast(code); - return returncode; + return code; } -static uint32_t setCode(ani_env *env, ani_object object, ani_int code) +static int32_t setCode(ani_env *env, ani_object object, ani_int code) { EVENT_LOGD("subscriberInstance setCode."); int32_t returncode = 0; @@ -768,7 +767,7 @@ static ani_string getData(ani_env *env, ani_object object) return aniResult; } -static uint32_t setData(ani_env *env, ani_object object, ani_string data) +static int32_t setData(ani_env *env, ani_object object, ani_string data) { EVENT_LOGD("subscriberInstance setData."); int32_t returncode = 0; @@ -787,7 +786,7 @@ static uint32_t setData(ani_env *env, ani_object object, ani_string data) return returncode; } -static uint32_t setCodeAndData(ani_env *env, ani_object object, ani_int code, ani_string data) +static int32_t setCodeAndData(ani_env *env, ani_object object, ani_int code, ani_string data) { EVENT_LOGD("subscriberInstance setCodeAndData."); int32_t returncode = 0; diff --git a/interfaces/kits/ani/common_event/src/ani_common_event_utils.cpp b/interfaces/kits/ani/common_event/src/ani_common_event_utils.cpp index e683d11d0e8aa89652d975235b3723dead107caa..cb7995a1fabc49fa4debedac95aebef46e0410d1 100644 --- a/interfaces/kits/ani/common_event/src/ani_common_event_utils.cpp +++ b/interfaces/kits/ani/common_event/src/ani_common_event_utils.cpp @@ -260,7 +260,7 @@ void AniCommonEventUtils::ConvertCommonEventPublishData(ani_env* env, ani_object { // Get the code. int32_t code; - if (GetDoubleOrUndefined(env, optionsObject, "code", code)) { + if (GetIntOrUndefined(env, optionsObject, "code", code)) { EVENT_LOGI("ConvertCommonEventPublishData code: %{public}d.", code); commonEventData.SetCode(code); } else { @@ -368,7 +368,7 @@ void AniCommonEventUtils::ConvertCommonEventSubscribeInfo( // Get the userId. int32_t userId; - if (GetDoubleOrUndefined(env, infoObject, "userId", userId)) { + if (GetIntOrUndefined(env, infoObject, "userId", userId)) { EVENT_LOGI("ConvertCommonEventPublishData userId: %{public}d.", userId); commonEventSubscribeInfo.SetUserId(userId); } else { @@ -377,7 +377,7 @@ void AniCommonEventUtils::ConvertCommonEventSubscribeInfo( // Get the priority. int32_t priority; - if (GetDoubleOrUndefined(env, infoObject, "priority", priority)) { + if (GetIntOrUndefined(env, infoObject, "priority", priority)) { EVENT_LOGI("ConvertCommonEventPublishData priority: %{public}d.", priority); commonEventSubscribeInfo.SetPriority(priority); } else { @@ -594,6 +594,28 @@ void AniCommonEventUtils::CreateAniDoubleObject(ani_env* env, ani_object &object } } +void AniCommonEventUtils::CreateAniIntObject(ani_env* env, ani_object &object, ani_int value) +{ + ani_status aniResult = ANI_ERROR; + ani_class clsInt = nullptr; + ani_method ctor; + aniResult = env->FindClass("Lstd/core/Int;", &clsInt); + if (aniResult != ANI_OK) { + EVENT_LOGE("CreateAniIntObject FindClass error. result: %{public}d.", aniResult); + return; + } + aniResult = env->Class_FindMethod(clsInt, "", "D:V", &ctor); + if (aniResult != ANI_OK) { + EVENT_LOGE("CreateAniIntObject Class_FindMethod error. result: %{public}d.", aniResult); + return; + } + aniResult = env->Object_New(clsInt, ctor, &object, value); + if (aniResult != ANI_OK) { + EVENT_LOGE("CreateAniIntObject Object_New error. result: %{public}d.", aniResult); + return; + } +} + void AniCommonEventUtils::ConvertCommonEventDataToEts( ani_env* env, ani_object& ani_data, const CommonEventData& commonEventData) { @@ -621,9 +643,9 @@ void AniCommonEventUtils::ConvertCommonEventDataToEts( env->String_NewUTF8(commonEventData.GetData().c_str(), commonEventData.GetData().size(), &string); CallSetter(env, cls, ani_data, SETTER_METHOD_NAME(data), string); - // set code [number] + // set code [int] ani_object codeObject; - CreateAniDoubleObject(env, codeObject, static_cast(commonEventData.GetCode())); + CreateAniIntObject(env, codeObject, commonEventData.GetCode()); CallSetter(env, cls, ani_data, SETTER_METHOD_NAME(code), codeObject); // set parameters [Record]