From 8578f13447d10824b9c29b0130f2096bb9401575 Mon Sep 17 00:00:00 2001 From: Alice Wang Date: Fri, 3 May 2024 09:01:56 +0000 Subject: Support IAccessor in libbinder for RPC services This cl sets up preconnected RPC binder for services launched with IAccessor as a proxy. Bug: 338541373 Test: m Test: atest vm_accessor_test Change-Id: Ic54732980778bc9ba8fec3395a0e98d336fea440 --- libs/binder/IServiceManager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'libs/binder/IServiceManager.cpp') diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp index 17e522d921..12a18f2a69 100644 --- a/libs/binder/IServiceManager.cpp +++ b/libs/binder/IServiceManager.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -57,6 +58,8 @@ using AidlRegistrationCallback = IServiceManager::LocalRegistrationCallback; using AidlServiceManager = android::os::IServiceManager; using android::binder::Status; +using android::os::IAccessor; +using android::os::Service; // libbinder's IServiceManager.h can't rely on the values generated by AIDL // because many places use its headers via include_dirs (meaning, without @@ -139,7 +142,10 @@ protected: // When implementing ServiceManagerShim, use realGetService instead of // mUnifiedServiceManager->getService so that it can be overridden in ServiceManagerHostShim. virtual Status realGetService(const std::string& name, sp* _aidl_return) { - return mUnifiedServiceManager->getService(name, _aidl_return); + Service service; + Status status = mUnifiedServiceManager->getService(name, &service); + *_aidl_return = service.get(); + return status; } }; @@ -327,11 +333,11 @@ sp ServiceManagerShim::getService(const String16& name) const sp ServiceManagerShim::checkService(const String16& name) const { - sp ret; + Service ret; if (!mUnifiedServiceManager->checkService(String8(name).c_str(), &ret).isOk()) { return nullptr; } - return ret; + return ret.get(); } status_t ServiceManagerShim::addService(const String16& name, const sp& service, -- cgit v1.2.3-59-g8ed1b