transcoding: change getClientUids to return nullable int[]
Returning int[] in out arg list doesn't work for Java client.
Change it to return nullable int[] instead and null return
indicates failure.
Bug: 171398942
test: transcoding unit tests.
Change-Id: Ic6b8959af8785653a33697efbec075071785001b
diff --git a/media/libmediatranscoding/TranscodingClientManager.cpp b/media/libmediatranscoding/TranscodingClientManager.cpp
index 086c658..6dbcaf9 100644
--- a/media/libmediatranscoding/TranscodingClientManager.cpp
+++ b/media/libmediatranscoding/TranscodingClientManager.cpp
@@ -97,8 +97,8 @@
Status addClientUid(int32_t /*in_sessionId*/, int32_t /*in_clientUid*/,
bool* /*_aidl_return*/) override;
- Status getClientUids(int32_t /*in_sessionId*/, std::vector<int32_t>* /*out_clientUids*/,
- bool* /*_aidl_return*/) override;
+ Status getClientUids(int32_t /*in_sessionId*/,
+ std::optional<std::vector<int32_t>>* /*_aidl_return*/) override;
Status unregister() override;
};
@@ -259,10 +259,9 @@
return Status::ok();
}
-Status TranscodingClientManager::ClientImpl::getClientUids(int32_t in_sessionId,
- std::vector<int32_t>* out_clientUids,
- bool* _aidl_return) {
- *_aidl_return = false;
+Status TranscodingClientManager::ClientImpl::getClientUids(
+ int32_t in_sessionId, std::optional<std::vector<int32_t>>* _aidl_return) {
+ *_aidl_return = std::nullopt;
std::shared_ptr<TranscodingClientManager> owner;
if (mAbandoned || (owner = mOwner.lock()) == nullptr) {
@@ -273,8 +272,11 @@
return Status::ok();
}
- *_aidl_return =
- owner->mSessionController->getClientUids(mClientId, in_sessionId, out_clientUids);
+ std::vector<int32_t> result;
+
+ if (owner->mSessionController->getClientUids(mClientId, in_sessionId, &result)) {
+ *_aidl_return = result;
+ }
return Status::ok();
}