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:
Michael Butler 2022-04-22 18:53:01 +00:00 committed by Automerger Merge Worker
commit aa9f97a0e2

View file

@ -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());
}