libbinder_ndk: AServiceManager_checkService # apex
Feature parity, for faster loading times, etc..
Bug: N/A (requested for use in libnetd_resolv)
Test: ./runtests.sh, noting specifically:
[ RUN ] NdkBinder.CheckServiceThatDoesntExist
[ OK ] NdkBinder.CheckServiceThatDoesntExist (0 ms)
[ RUN ] NdkBinder.CheckServiceThatDoesExist
[ OK ] NdkBinder.CheckServiceThatDoesExist (0 ms)
Change-Id: I36b2a7420f5dd374e6b60898a778bbcedb9bd406
diff --git a/libs/binder/ndk/service_manager.cpp b/libs/binder/ndk/service_manager.cpp
index 9ddc555..d0b166d 100644
--- a/libs/binder/ndk/service_manager.cpp
+++ b/libs/binder/ndk/service_manager.cpp
@@ -37,6 +37,18 @@
status_t status = sm->addService(String16(instance), binder->getBinder());
return PruneStatusT(status);
}
+AIBinder* AServiceManager_checkService(const char* instance) {
+ if (instance == nullptr) {
+ return nullptr;
+ }
+
+ sp<IServiceManager> sm = defaultServiceManager();
+ sp<IBinder> binder = sm->checkService(String16(instance));
+
+ sp<AIBinder> ret = ABpBinder::lookupOrCreateFromBinder(binder);
+ AIBinder_incStrong(ret.get());
+ return ret.get();
+}
AIBinder* AServiceManager_getService(const char* instance) {
if (instance == nullptr) {
return nullptr;