diff --git a/interfaces/kits/js/src/common/ani_helper/ani_signature.cpp b/interfaces/kits/js/src/common/ani_helper/ani_signature.cpp index f8a2a92debbfdf077663d6197e7c20acad3f5c09..a523304295ac487241d5f48c223cbd773150d52d 100644 --- a/interfaces/kits/js/src/common/ani_helper/ani_signature.cpp +++ b/interfaces/kits/js/src/common/ani_helper/ani_signature.cpp @@ -128,6 +128,14 @@ const string FS::WriteStream::ctorSig = Builder::BuildSignatureDescriptor({ Buil const Type FS::AtomicFile::classType = Builder::BuildClass("@ohos.file.fs.fileIo.AtomicFile"); const string FS::AtomicFile::classDesc = FS::AtomicFile::classType.Descriptor(); const string FS::AtomicFile::ctorSig = Builder::BuildSignatureDescriptor({ BuiltInTypes::stringType }); +// FS::ReadStreamOptionsInner +const Type FS::ReadStreamOptionsInner::classType = Builder::BuildClass("@ohos.file.fs.WriteStreamOptionsInner"); +const string FS::ReadStreamOptionsInner::classDesc = FS::ReadStreamOptionsInner::classType.Descriptor(); +const string FS::ReadStreamOptionsInner::ctorSig = Builder::BuildSignatureDescriptor({ BuiltInTypes::stringType }); +// FS::WriteStreamOptionsInner +const Type FS::WriteStreamOptionsInner::classType = Builder::BuildClass("@ohos.file.fs.fileIo.ReadStream"); +const string FS::WriteStreamOptionsInner::classDesc = FS::WriteStreamOptionsInner::classType.Descriptor(); +const string FS::WriteStreamOptionsInner::ctorSig = Builder::BuildSignatureDescriptor({ BuiltInTypes::stringType }); // FS::LocationType const Type FS::LocationType::classType = Builder::BuildClass("@ohos.file.fs.fileIo.LocationType"); const string FS::LocationType::classDesc = FS::LocationType::classType.Descriptor(); diff --git a/interfaces/kits/js/src/common/ani_helper/ani_signature.h b/interfaces/kits/js/src/common/ani_helper/ani_signature.h index 3938f3fb85e10d82ecb19701ace14276ad983376..75e3ec0aca1aa9683b50b01888ba8bf890b81e57 100644 --- a/interfaces/kits/js/src/common/ani_helper/ani_signature.h +++ b/interfaces/kits/js/src/common/ani_helper/ani_signature.h @@ -200,6 +200,18 @@ struct AtomicFile : public BaseType { static const string ctorSig; }; +struct ReadStreamOptionsInner : public BaseType { + static const Type classType; + static const string classDesc; + static const string ctorSig; +}; + +struct WriteStreamOptionsInner : public BaseType { + static const Type classType; + static const string classDesc; + static const string ctorSig; +}; + } // namespace FS namespace Impl { diff --git a/interfaces/kits/js/src/mod_fs/class_randomaccessfile/ani/randomaccessfile_ani.cpp b/interfaces/kits/js/src/mod_fs/class_randomaccessfile/ani/randomaccessfile_ani.cpp index 604835791b9fe812fe42c9d0160c3b0bd6220bd0..c8c104f723fc702f379457ce191f7d3b54b42e6f 100644 --- a/interfaces/kits/js/src/mod_fs/class_randomaccessfile/ani/randomaccessfile_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/class_randomaccessfile/ani/randomaccessfile_ani.cpp @@ -283,31 +283,34 @@ static ani_string GetFilePath(ani_env *env, const int fd) static ani_object CreateReadStreamOptions(ani_env *env, int64_t start, int64_t end) { - static const char *className = "L@ohos/file/fs/ReadStreamOptionsInner;"; + auto classDesc = FS::ReadStreamOptionsInner::classDesc.c_str(); ani_class cls; - if (ANI_OK != env->FindClass(className, &cls)) { - HILOGE("Cannot find class %s", className); + if (ANI_OK != env->FindClass(classDesc, &cls)) { + HILOGE("Cannot find class %s", classDesc); return nullptr; } + + auto ctorDesc = FS::ReadStreamOptionsInner::ctorDesc.c_str(); + auto ctorSig = FS::ReadStreamOptionsInner::ctorSig.c_str(); ani_method ctor; - if (ANI_OK != env->Class_FindMethod(cls, "", ":V", &ctor)) { - HILOGE("Cannot find constructor method for class %s", className); + if (ANI_OK != env->Class_FindMethod(cls, ctorDesc, ctorSig, &ctor)) { + HILOGE("Cannot find constructor method for class %s", classDesc); return nullptr; } ani_object obj; if (ANI_OK != env->Object_New(cls, ctor, &obj)) { - HILOGE("New %s obj Failed", className); + HILOGE("New %s obj Failed", classDesc); return nullptr; } ani_field startField = nullptr; ani_field endField = nullptr; if (ANI_OK != env->Class_FindField(cls, "start", &startField)) { - HILOGE("Cannot find start in class %s", className); + HILOGE("Cannot find start in class %s", classDesc); return nullptr; } if (ANI_OK != env->Class_FindField(cls, "end", &endField)) { - HILOGE("Cannot find end in class %s", className); + HILOGE("Cannot find end in class %s", classDesc); return nullptr; } @@ -326,31 +329,35 @@ static ani_object CreateReadStreamOptions(ani_env *env, int64_t start, int64_t e static ani_object CreateWriteStreamOptions(ani_env *env, int64_t start, int flags) { - static const char *className = "L@ohos/file/fs/WriteStreamOptionsInner;"; + auto classDesc = FS::WriteStreamOptionsInner::classDesc.c_str(); ani_class cls; - if (ANI_OK != env->FindClass(className, &cls)) { - HILOGE("Cannot find class %s", className); + if (ANI_OK != env->FindClass(classDesc, &cls)) { + HILOGE("Cannot find class %s", classDesc); return nullptr; } + + auto ctorDesc = FS::WriteStreamOptionsInner::ctorDesc.c_str(); + auto ctorSig = FS::WriteStreamOptionsInner::ctorSig.c_str(); ani_method ctor; - if (ANI_OK != env->Class_FindMethod(cls, "", ":V", &ctor)) { - HILOGE("Cannot find constructor method for class %s", className); + if (ANI_OK != env->Class_FindMethod(cls, ctorDesc, ctorSig, &ctor)) { + HILOGE("Cannot find constructor method for class %s", classDesc); return nullptr; } + ani_object obj; if (ANI_OK != env->Object_New(cls, ctor, &obj)) { - HILOGE("New %s obj Failed", className); + HILOGE("New %s obj Failed", classDesc); return nullptr; } ani_field modeField = nullptr; ani_field startField = nullptr; if (ANI_OK != env->Class_FindField(cls, "mode", &modeField)) { - HILOGE("Cannot find mode in class %s", className); + HILOGE("Cannot find mode in class %s", classDesc); return nullptr; } if (ANI_OK != env->Class_FindField(cls, "start", &startField)) { - HILOGE("Cannot find start in class %s", className); + HILOGE("Cannot find start in class %s", classDesc); return nullptr; } @@ -364,20 +371,24 @@ static ani_object CreateWriteStreamOptions(ani_env *env, int64_t start, int flag static ani_object CreateReadStream(ani_env *env, ani_string filePath, ani_object options) { - static const char *className = "L@ohos/file/fs/fileIo/ReadStream;"; + auto classDesc = FS::ReadStream::classDesc.c_str(); ani_class cls; - if (ANI_OK != env->FindClass(className, &cls)) { - HILOGE("Cannot find class %s", className); + if (ANI_OK != env->FindClass(classDesc, &cls)) { + HILOGE("Cannot find class %s", classDesc); return nullptr; } + + auto ctorDesc = FS::ReadStream::ctorDesc.c_str(); + auto ctorSig = FS::ReadStream::ctorSig.c_str(); ani_method ctor; - if (ANI_OK != env->Class_FindMethod(cls, "", "Lstd/core/String;L@ohos/file/fs/ReadStreamOptions;:V", &ctor)) { - HILOGE("Cannot find constructor method for class %s", className); + if (ANI_OK != env->Class_FindMethod(cls, ctorDesc, ctorSig, &ctor)) { + HILOGE("Cannot find constructor method for class %s", classDesc); return nullptr; } + ani_object obj; if (ANI_OK != env->Object_New(cls, ctor, &obj, filePath, options)) { - HILOGE("New %s obj Failed", className); + HILOGE("New %s obj Failed", classDesc); return nullptr; } @@ -386,21 +397,24 @@ static ani_object CreateReadStream(ani_env *env, ani_string filePath, ani_object static ani_object CreateWriteStream(ani_env *env, ani_string filePath, ani_object options) { - static const char *className = "L@ohos/file/fs/fileIo/WriteStream;"; + auto classDesc = FS::WriteStream::classDesc.c_str(); ani_class cls; - if (ANI_OK != env->FindClass(className, &cls)) { - HILOGE("Cannot find class %s", className); + if (ANI_OK != env->FindClass(classDesc, &cls)) { + HILOGE("Cannot find class %s", classDesc); return nullptr; } + + auto ctorDesc = FS::WriteStream::ctorDesc.c_str(); + auto ctorSig = FS::WriteStream::ctorSig.c_str(); ani_method ctor; - if (ANI_OK != - env->Class_FindMethod(cls, "", "Lstd/core/String;L@ohos/file/fs/WriteStreamOptions;:V", &ctor)) { - HILOGE("Cannot find constructor method for class %s", className); + if (ANI_OK != env->Class_FindMethod(cls, ctorDesc, ctorSig, &ctor)) { + HILOGE("Cannot find constructor method for class %s", classDesc); return nullptr; } + ani_object obj; if (ANI_OK != env->Object_New(cls, ctor, &obj, filePath, options)) { - HILOGE("New %s obj Failed", className); + HILOGE("New %s obj Failed", classDesc); return nullptr; }