summaryrefslogtreecommitdiff
path: root/libs/binder/IServiceManager.cpp
diff options
context:
space:
mode:
author Devin Moore <devinmoore@google.com> 2025-01-06 10:35:18 -0800
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2025-01-06 10:35:18 -0800
commit03cb1fd21d43cc4ab0fef2eaaa3ddf4bb8042d96 (patch)
treeb52e76e3536f2e9471de8cee1f7d219bbae088ae /libs/binder/IServiceManager.cpp
parentc9e5f470b50b7953c8446e9e24e5d7c80d2ad4ae (diff)
parent4449d4e569651281025d7df45f971abc49dea396 (diff)
Merge changes from topic "no_sm_proc" into main
* changes: Change callback handling from Arc to Box Add listServices/isDeclared/getDeclaredInstances for Accessors Enable ServiceManager APIs without servicemanager process
Diffstat (limited to 'libs/binder/IServiceManager.cpp')
-rw-r--r--libs/binder/IServiceManager.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp
index 53435c357b..5c72ed3197 100644
--- a/libs/binder/IServiceManager.cpp
+++ b/libs/binder/IServiceManager.cpp
@@ -304,6 +304,25 @@ android::binder::Status getInjectedAccessor(const std::string& name,
return android::binder::Status::ok();
}
+void appendInjectedAccessorServices(std::vector<std::string>* list) {
+ LOG_ALWAYS_FATAL_IF(list == nullptr,
+ "Attempted to get list of services from Accessors with nullptr");
+ std::lock_guard<std::mutex> lock(gAccessorProvidersMutex);
+ for (const auto& entry : gAccessorProviders) {
+ list->insert(list->end(), entry.mProvider->instances().begin(),
+ entry.mProvider->instances().end());
+ }
+}
+
+void forEachInjectedAccessorService(const std::function<void(const std::string&)>& f) {
+ std::lock_guard<std::mutex> lock(gAccessorProvidersMutex);
+ for (const auto& entry : gAccessorProviders) {
+ for (const auto& instance : entry.mProvider->instances()) {
+ f(instance);
+ }
+ }
+}
+
sp<IServiceManager> defaultServiceManager()
{
std::call_once(gSmOnce, []() {