From 37f70cc1029e8e984e60f485db59d6e6889cbb1b Mon Sep 17 00:00:00 2001 From: Jon Spivack Date: Sat, 25 Jan 2020 02:55:04 +0000 Subject: Revert "Dynamically stop services with multiple interfaces" Revert "Add aidl_lazy_test_server to Cuttlefish" Revert "Move aidl_lazy_test_server to system_ext" Revert submission 1209453-aidl-lazy-presubmit Reason for revert: b/148282665. A test has begun to fail on git_stage-aosp-master, and I need to verify whether these changes are responsible. Reverted Changes: Ib09a2460e: Add aidl_lazy_test to general-tests Ib08989356: Move aidl_lazy_test_server to system_ext I694e6ad35: Add aidl_lazy_test_server to Cuttlefish I65db12c63: Add aidl_lazy_test to presubmit I7ec80a280: Dynamically stop services with multiple interfaces... Change-Id: I6d3b589bf2861f68d2852c8def7a1f51eea7cf97 --- libs/binder/LazyServiceRegistrar.cpp | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'libs') diff --git a/libs/binder/LazyServiceRegistrar.cpp b/libs/binder/LazyServiceRegistrar.cpp index f064bd77ce..dc9482c536 100644 --- a/libs/binder/LazyServiceRegistrar.cpp +++ b/libs/binder/LazyServiceRegistrar.cpp @@ -53,13 +53,14 @@ private: struct Service { sp service; + std::string name; bool allowIsolated; int dumpFlags; }; /** - * Map of registered names and services + * Number of services that have been registered. */ - std::map mRegisteredServices; + std::vector mRegisteredServices; }; bool ClientCounterCallback::registerService(const sp& service, const std::string& name, @@ -67,24 +68,20 @@ bool ClientCounterCallback::registerService(const sp& service, const st auto manager = interface_cast( ProcessState::self()->getContextObject(nullptr)); - bool reRegister = mRegisteredServices.count(name) > 0; - std::string regStr = (reRegister) ? "Re-registering" : "Registering"; - ALOGI("%s service %s", regStr.c_str(), name.c_str()); + ALOGI("Registering service %s", name.c_str()); if (!manager->addService(name.c_str(), service, allowIsolated, dumpFlags).isOk()) { ALOGE("Failed to register service %s", name.c_str()); return false; } - if (!manager->registerClientCallback(name, service, this).isOk()) { - ALOGE("Failed to add client callback for service %s", name.c_str()); - return false; + if (!manager->registerClientCallback(name, service, this).isOk()) + { + ALOGE("Failed to add client callback for service %s", name.c_str()); + return false; } - if (!reRegister) { - // Only add this when a service is added for the first time, as it is not removed - mRegisteredServices[name] = {service, allowIsolated, dumpFlags}; - } + mRegisteredServices.push_back({service, name, allowIsolated, dumpFlags}); return true; } @@ -122,11 +119,10 @@ void ClientCounterCallback::tryShutdown() { for (; unRegisterIt != mRegisteredServices.end(); ++unRegisterIt) { auto& entry = (*unRegisterIt); - bool success = manager->tryUnregisterService(entry.first, entry.second.service).isOk(); - + bool success = manager->tryUnregisterService(entry.name, entry.service).isOk(); if (!success) { - ALOGI("Failed to unregister service %s", entry.first.c_str()); + ALOGI("Failed to unregister service %s", entry.name.c_str()); break; } } @@ -141,8 +137,7 @@ void ClientCounterCallback::tryShutdown() { auto& entry = (*reRegisterIt); // re-register entry - if (!registerService(entry.second.service, entry.first, entry.second.allowIsolated, - entry.second.dumpFlags)) { + if (!registerService(entry.service, entry.name, entry.allowIsolated, entry.dumpFlags)) { // Must restart. Otherwise, clients will never be able to get a hold of this service. ALOGE("Bad state: could not re-register services"); } -- cgit v1.2.3-59-g8ed1b