Merge "Handle case where NN AIDL callback is null in IDevice::prepareModel*" am: 5d4f1b70c2
am: 84ec222eb5
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2072333 Change-Id: If046a013f58c839e3b01b0774c070d6a8b1fbc3c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
aa9f97a0e2
1 changed files with 15 additions and 5 deletions
|
@ -135,16 +135,26 @@ std::shared_ptr<PreparedModel> adaptPreparedModel(nn::SharedPreparedModel prepar
|
|||
return ndk::SharedRefBase::make<PreparedModel>(std::move(preparedModel));
|
||||
}
|
||||
|
||||
void notify(IPreparedModelCallback* callback, ErrorStatus status,
|
||||
const std::shared_ptr<IPreparedModel>& preparedModel) {
|
||||
if (callback != nullptr) {
|
||||
const auto ret = callback->notify(status, preparedModel);
|
||||
if (!ret.isOk()) {
|
||||
LOG(ERROR) << "IPreparedModelCallback::notify failed with " << ret.getDescription();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void notify(IPreparedModelCallback* callback, PrepareModelResult result) {
|
||||
if (!result.has_value()) {
|
||||
const auto& [message, status] = result.error();
|
||||
LOG(ERROR) << message;
|
||||
const auto aidlCode = utils::convert(status).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback, aidlCode, nullptr);
|
||||
} else {
|
||||
auto preparedModel = std::move(result).value();
|
||||
auto aidlPreparedModel = adaptPreparedModel(std::move(preparedModel));
|
||||
callback->notify(ErrorStatus::NONE, std::move(aidlPreparedModel));
|
||||
notify(callback, ErrorStatus::NONE, std::move(aidlPreparedModel));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,7 +294,7 @@ ndk::ScopedAStatus Device::prepareModel(const Model& model, ExecutionPreference
|
|||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
|
@ -300,7 +310,7 @@ ndk::ScopedAStatus Device::prepareModelFromCache(
|
|||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
|
@ -317,7 +327,7 @@ ndk::ScopedAStatus Device::prepareModelWithConfig(
|
|||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue